2011-09-26 115 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); 
    }