2011-09-26 49 views
1

我想知道是否有人可以帮助我找出删除部分字符串的方法。我使用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); 
    } 
}   
} 

回答

2

我会尝试以普通的Java编码器(我假设)以非正统的方式接近这一点。我会尽量利用正则表达式的力量。

尝试探索java.util.regex

世界它不会伤害到学习正则表达式,因为它的全线字符串处理解决方案中使用。

我希望有帮助。

3

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

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

所以:

你当然可以正则表达式做到这一点通过Mr_Spock的建议,而是亲自为只是一对夫妇的操作我会用正常的字符串的方法坚守:

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); 
     } 
    } 
} 

注意,这仍然给你留下了一些有趣的名字,如“北达科他州/比尤拉”作为原始ID中有两条斜线。

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

+0

感谢您验证我的方法的有效性。很好的答案。 +1 –

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); 
     } 
} 
+0

'zone1.substring(zone1.indexOf('/')+ 1);'就够了,不需要第二个参数 –

+0

是的,你是对的:) ..只是纠正了它 – Santosh

+0

这个工程!非常感谢,如果这是一个非常简单的问题,我对编程非常陌生! – Allie

0

只需使用分割区: -

String zone1 = Zone[i]; 
zone1 = (zone1.split("/").length > 1) ? zone1.split("/")[1] : zone1.split("/")[0]; 
zone1 = zone1.replaceAll("_"," "); 
0
if(zone1.indexOf("/")!=-1) { 
     zone1=zone1.substring(zone1.indexOf("/")+1,zone1.length()); 
     System.out.println(zone1); 
    } 
相关问题