2011-10-06 47 views
2

我需要標記一個字符串哪裏有多個空間。tokenizer或分割字符串在多個空格在java

例如

"HUNTSVILLE, AL     30 39.8 44.3 52.3" 

成爲

"HUNTSVILLE, AL","30","39.8","44.3","52.3" 


StringTokenizer st = new StringTokenizer(str, " "); 

只是任何標記化的空白,而且我想不出一個正則表達式做什麼,我需要。

感謝

+0

@ user914763再次閱讀你的問題,這沒有任何意義。提供你所得到的以及你想要發生的事情,否則沒有人能夠幫助你。就目前而言,你從來沒有真正描述過你想要的東西,所以你需要做的事情對我們所有人來說都是一個謎。 –

+0

我的問題很有道理。我有一個要解析的文本樣本和期望的結果。我得到了4個答案,這些答案都可以幫助那些善意幫助我的人解決我的問題。 – jeremyjjbrown

回答

8

試試這個:

String s = "HUNTSVILLE, AL     30 39.8 44.3 52.3"; 
String[] parts = s.split("\\s{3,}"); 
for(String p : parts) { 
    System.out.println(p); 
} 

\s匹配任何空格字符,並且{3,}將在3次或更多次與之匹敵。

上面的代碼段將打印:

HUNTSVILLE, AL 
30 
39.8 
44.3 
52.3
+0

謝謝。這很好。比標記器好得多。一有機會,我會盡快閱讀我的正則表達式。 – jeremyjjbrown

+0

不客氣jeremyjjbrown。 –

3

你不能使用分裂?

String[] tokens = string.split(" "); 

雖然您必須過濾空條目。

2
/* 
* Uses split to break up a string of input separated by 
* whitespace. 
*/ 
import java.util.regex.*; 

public class Splitter { 
    public static void main(String[] args) throws Exception { 
     // Create a pattern to match breaks 
     Pattern p = Pattern.compile("[ ]{2,}"); 
     // Split input with the pattern 
     String[] result = 
       p.split("one,two, three four , five"); 
     for (int i=0; i<result.length; i++) 
      System.out.println(result[i]); 
    } 
} 
3

嘗試這種方式:

String[] result = "HUNTSVILLE, AL     30 39.8 44.3 52.3".split("[ ]{2,}"); 
    for (int x=0; x<result.length; x++) 
     System.out.println(result[x]); 

[] - 表示空間
{2,} - 表示超過2