2011-10-06 45 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