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



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

1191   12  

12 ответов:

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

myString.split("\s+");

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

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

"Hello[space][tab]World"

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

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

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

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

\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()

изучить этот код.. удачи

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

        } 
    }
}

Comments

    Ничего не найдено.