Как разделять строку с любыми символами пробелов как разделителями?

Какой шаблон регулярного выражения мне понадобится, чтобы перейти к методу java.lang.String.split(), чтобы разделить String на массив подстрок, используя все символы пробелов ('', '\ t', '\n' и т.д.) в качестве разделителей?

+474
источник поделиться
11 ответов

Что-то в строках

myString.split("\\s+");

Это группирует все пробелы в качестве разделителя.

Итак, если у меня есть строка:

"Hello[space][tab]World"

Это должно привести к строкам "Hello" и "World" и опустить пустое пространство между [space] и [tab].

Как указывал VonC, обратная косая черта должна быть экранирована, потому что Java сначала попытается вывести строку на специальный символ и отправить ее для анализа. То, что вы хотите, это буквальный "\s", что означает, что вам нужно пройти "\\s". Это может немного запутать.

\\s эквивалентен [ \\t\\n\\x0B\\f\\r]

+838
источник

В большинстве диалектов regex есть набор удобных сокращений персонажей, которые вы можете использовать для такого рода вещей - это хорошие воспоминания:

\w - Соответствует любому символу слова.

\w - Соответствует любому символу без слова.

\s - Соответствует любому символу пробела.

\s - Совпадает с символами пробела.

\d - Соответствует любой цифре.

\d - Соответствует всем, кроме цифр.

Поиск "Regex Cheatsheets" должен вознаградить вас множеством полезных резюме.

+76
источник
другие ответы

Связанные вопросы


Похожие вопросы

Чтобы получить эту рабочую в Javascript, мне пришлось сделать следующее:

myString.split(/\s+/g)
+54
источник

"\\ s +" должен сделать трюк

+34
источник

Также у вас может быть UniCode неразрывное пространство xA0...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
+9
источник

Apache Commons Lang имеет метод разбиения строки с символами пробела в качестве разделителей:

StringUtils.split("abc def")

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

Это может быть проще в использовании, чем шаблон регулярного выражения.

+8
источник
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
+8
источник

Так как это регулярное выражение, и я предполагаю, что u также не захочет не буквенно-цифровых символов, таких как запятые, точки и т.д., которые могут быть окружены пробелами (например, "один, два" должны дать [один] [два ]), это должно быть:

myString.split(/[\s\W]+/)
+2
источник

вы можете разделить строку на разрыв строки, используя следующую инструкцию:

 String textStr[] = yourString.split("\\r?\\n");

вы можете разделить строку на Whitespace, используя следующую инструкцию:

String textStr[] = yourString.split("\\s+");
+1
источник
String str = "Hello   World";
String res[] = str.split("\\s+");
+1
источник

Изучите этот код.. удачи

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}
-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос