Как разбить строку с любыми символами пробелов в качестве разделителей?
какой шаблон регулярного выражения мне понадобится, чтобы перейти к 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" должен вознаградить вас с большим количеством полезных резюме.
также у вас может быть Unicode неразрывное пространство xA0...
String[] elements = s.split("[\s\xA0]+"); //include uniCode non-breaking
Apache Commons Lang имеет метод разделения строки с пробелами в качестве разделителей:
StringUtils.split("abc def")
Это может быть проще в использовании, чем regex образец.
поскольку это регулярное выражение, и я предполагаю, что u также не хотел бы не буквенно-цифровых символов, таких как запятые, точки и т. д. , которые могут быть окружены пробелами (например, "один, два" должен дать [один][два]), это должно быть:
myString.split(/[\s\W]+/)
вы можете разделить строку на строки с помощью следующей инструкции :
String textStr[] = yourString.split("\r?\n");
вы можете разделить строку пробелами, используя следующий оператор:
String textStr[] = yourString.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);
}
}
}