Я хотел бы знать, как разделить большую строку на ряд меньших строк или слов. Например:
Я хочу погулять с моей собакой.
Я хочу иметь строку: "I"
,
другая строка: "want"
и т.д.
Как мне это сделать?
Я хотел бы знать, как разделить большую строку на ряд меньших строк или слов. Например:
Я хочу погулять с моей собакой.
Я хочу иметь строку: "I"
,
другая строка: "want"
и т.д.
Как мне это сделать?
Используйте метод split()
Например:
String s = "I want to walk my dog";
String[] arr = s.split(" ");
for ( String ss : arr) {
System.out.println(ss);
}
Как более общее решение (но только ASCII!), чтобы включить любые другие разделители между словами (например, запятые и точки с запятой), я предлагаю:
String s = "I want to walk my dog, cat, and tarantula; maybe even my tortoise.";
String[] words = s.split("\\W+");
Регулярное выражение означает, что разделителями будет все, что не является словом [\ W], в группах по крайней мере одного [+]. Поскольку [+] жадный, это займет, например, ';' и "вместе" как один разделитель.
Регулярное выражение также может быть использовано для разделения слов.
\w
можно использовать для сопоставления символов слова ([A-Za-z0-9_]
), так что пунктуация удаляется из результатов:
String s = "I want to walk my dog, and why not?";
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
Выходы:
I
want
to
walk
my
dog
and
why
not
См. Документацию Java API для Pattern
См. мой другой ответ, если ваша фраза содержит акцентированные символы:
String[] listeMots = phrase.split("\\P{L}+");
Еще один метод, используя StringTokenizer:
String s = "I want to walk my dog";
StringTokenizer tokenizer = new StringTokenizer(s);
while(tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
Вы можете использовать метод split(" ")
класса String
и можете получить каждое слово в качестве кода, приведенного ниже:
String s = "I want to walk my dog";
String []strArray=s.split(" ");
for(int i=0; i<strArray.length;i++) {
System.out.println(strArray[i]);
}
Используйте split()
String words[] = stringInstance.split(" ");
Чтобы включить любые разделители между словами (например, все, кроме всех строчных и строчных букв), мы можем сделать:
String mystring = "hi, there,hi Leo";
String[] arr = mystring.split("[^a-zA-Z]+");
for(int i = 0; i < arr.length; i += 1)
{
System.out.println(arr[i]);
}
Здесь регулярное выражение означает, что разделители будут чем-либо, что не является верхней или нижней буквой [^a-zA-Z]
, в группах по меньшей мере одного [+].
Вы можете использовать класс StringUtils Apache commons
String[] partsOfString = StringUtils.split("I want to walk my dog",StringUtils.SPACE)
String [] str = s.split("[^ a-zA-Z] +");