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

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

12 ответов


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

myString.split("\s+");

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

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

"Hello[space][tab]World"

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

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

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


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

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

\W - соответствует любому символу без слов.

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

\S - соответствует чему угодно, кроме символов пробела.

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

\D - играм все, кроме цифр.

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


это в Javascript, Я должен был сделать следующее:

myString.split(/\s+/g)

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


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

String[] elements = s.split("[\s\xA0]+"); //include uniCode non-breaking

String string = "Ram is going to school";
String[] arrayOfString = string.split("\s+");

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)

Это может быть проще в использовании, чем regex образец.


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

myString.split(/[\s\W]+/)

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

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

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

String textStr[] = yourString.split("\s+");

String str = "Hello   World";
String res[] = str.split("\s+");

Я удивлен, что никто не упомянул строку.split () без параметров. Разве не для этого он создан? как в:

"abc def ghi".split()

изучить этот код.. удачи!--2-->

    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);

        } 
    }
}