токенизатор или разделить строку в нескольких местах в Java - PullRequest
2 голосов
/ 06 октября 2011

Мне нужно токенизировать строку, где есть несколько пробелов.

, например

"HUNTSVILLE, AL                   30   39.8   44.3   52.3"

становится

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

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

просто размечает любые пробелы, и я не могу найти регулярное выражение, чтобы сделать то, что мне нужно.

Спасибо

Ответы [ 4 ]

8 голосов
/ 06 октября 2011

Попробуйте это:

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
3 голосов
/ 06 октября 2011

Попробуйте следующим образом:

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

3 голосов
/ 06 октября 2011

Не можете ли вы использовать сплит?

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

Вы должны фильтровать пустые записи.

2 голосов
/ 06 октября 2011
 /*
 * 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]);
    }
}
...