我想知道如何将一个较长的字符串拆分成一系列较短的子字符串或单词。
例如:
我想把句子“我想遛狗。”拆分成字符串:“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);
}
["foo", "2", "bar"]
?需要使用正则表达式的简单解决方案。 - user1742529作为一个更一般的解决方案(但仅限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}+");
فنّى
将被拆分为两个单词。 - Ahmed Ashour另一种方法是使用StringTokenizer:
String s = "I want to walk my dog";
StringTokenizer tokenizer = new StringTokenizer(s);
while(tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
StringTokenizer
在字符串中查找连续的标记,并逐个返回它们。 - KaoString 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]
,至少一个字符为一组[+]
String
类的split(" ")
方法,并按照下面的代码获取每个单词: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]);
}
这个正则表达式将通过空格、制表符和换行符来分隔单词:
String[] str = s.split("\\s+");
String[] partsOfString = StringUtils.split("I want to walk my dog", StringUtils.SPACE)
Java String split()方法示例
public class SplitExample{
public static void main(String args[]){
String str="java string split method";
String[] words=str.split("\\s");//splits the string based on whitespace
for(String word:words){
System.out.println(word);
}
}
}