将时区名称转换为城市名称(删除大陆部分)

时间:2011-09-26 05:51:40

标签: java string

我想知道是否有人可以帮我解决删除部分字符串的问题。我正在使用java.util.TimeZone来检索时区“ids”,但我想删除大陆/前缀,基本上剥离了城市名称。我还必须用代码中已经完成的空格替换所有下划线。我似乎无法找到一种方法来摆脱反斜杠和它之前的一切。这是我的代码。感谢

import java.util.*;
import java.util.TimeZone;
import java.util.Date;
import java.text.DateFormat;

public class Maps {

public static void main(String[] args) {

  String[] Zone = TimeZone.getAvailableIDs();

  int i = 0;

   for (i =0 ; i< Zone.length; i++) {
    String zone1 = Zone[i].replaceAll("_"," "); 

    System.out.println(zone1);
   }   
 }        
}

5 个答案:

答案 0 :(得分:4)

所以你想在第一个斜杠之前删除所有内容,然后用空格替换余数中的任何下划线?使用indexOfsubstringreplace(你已经知道)这很容易。

你肯定可以使用正则表达式来执行此操作,如Mr_Spock所建议的那样,但就个人操作而言,我会坚持使用正常的字符串方法:

int slash = text.indexOf('/');
text = text.substring(slash + 1).replace("_", " ");

这是一个完整的例子:

import java.util.TimeZone;

public class Test {

    public static void main(String[] args) {        
        String[] ids = TimeZone.getAvailableIDs();

        for (String id : ids) {
            int slash = id.indexOf('/');
            String stripped = id.substring(slash + 1).replace("_", " ");
            System.out.println(stripped);
        }
    }   
}

请注意,这仍然会留下一些有趣的名字,例如“North Dakota / Beulah”,因为原始ID有两个斜杠。

为了完整性,另一种处理斜杠的方法是将字符串拆分为斜杠,然后取第二部分 - 但如上例所示,您可能希望确保它最多分成 两部分,将“北达科他州/ Beulah”作为单一标记。如果没有任何斜杠的任何ID,你还需要小心(上面的代码工作正常,因为indexOf将返回-1,所以子字符串将成为无操作)。

答案 1 :(得分:2)

对于普通的Java编码器(我假设),我会尝试以非正统的方式处理这个问题。我试着利用正则表达式的力量。

尝试探索java.util.regex

的世界

了解RegEx并没有什么坏处,因为它全面用于字符串操作解决方案。

我希望有所帮助。

答案 2 :(得分:0)

检查出来:

              public static void main(String[] args) {

        String[] Zone = TimeZone.getAvailableIDs();

         int i = 0;

       for (i =0 ; i< Zone.length; i++) {
        String zone1 = Zone[i].replaceAll("_"," ");

        if(zone1.indexOf('/') != -1)
          zone1 = zone1.substring(zone1.indexOf('/')+1);

        System.out.println(zone1);
       }   
}

答案 3 :(得分:0)

您可以只使用拆分区域: -

String zone1 = Zone[i];
zone1 = (zone1.split("/").length > 1) ? zone1.split("/")[1] : zone1.split("/")[0];
zone1 = zone1.replaceAll("_"," "); 

答案 4 :(得分:0)

 if(zone1.indexOf("/")!=-1) {
        zone1=zone1.substring(zone1.indexOf("/")+1,zone1.length());
        System.out.println(zone1);
    }