50

我想知道如何将一个大字符串分成一系列较小的字符串或单词。例如:

我想遛狗。

我想要一个 string: "I",另一个 string:"want"等。

我该怎么做?

4

14 回答 14

83

使用split()方法

例如:

String s = "I want to walk my dog";
String[] arr = s.split(" ");    

for ( String ss : arr) {
    System.out.println(ss);
}
于 2012-07-30T16:54:29.857 回答
69

作为更通用的解决方案(但仅限 ASCII!),在单词之间包含任何其他分隔符(如逗号和分号),我建议:

String s = "I want to walk my dog, cat, and tarantula; maybe even my tortoise.";
String[] words = s.split("\\W+");

正则表达式意味着分隔符将是任何不是单词 [\W] 的内容,至少以一个 [+] 为一组。因为 [+] 是贪婪的,所以它会采用例如 ';' 和 ' ' 一起作为一个分隔符。

于 2015-07-28T11:26:07.923 回答
30

正则表达式也可用于拆分单词。

\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

于 2015-01-31T22:12:26.377 回答
11

如果您的短语包含重音字符,请参阅我的其他答案:

String[] listeMots = phrase.split("\\P{L}+");
于 2016-11-04T02:37:19.073 回答
5

还有另一种方法,使用StringTokenizer

String s = "I want to walk my dog";
StringTokenizer tokenizer = new StringTokenizer(s);

while(tokenizer.hasMoreTokens()) {
    System.out.println(tokenizer.nextToken());
}
于 2014-09-10T08:57:12.103 回答
4

要在单词之间包含任何分隔符(就像除了所有小写和大写字母之外的所有内容),我们可以这样做:

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]的,至少一个 [+] 为一组。

于 2016-11-20T05:56:17.643 回答
2

您可以使用该类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]);
}
于 2014-07-19T17:54:35.593 回答
1

采用split()

String words[] = stringInstance.split(" ");
于 2012-07-30T16:53:25.163 回答
1

你可以使用 Apache commons 的 StringUtils 类

String[] partsOfString = StringUtils.split("I want to walk my dog", StringUtils.SPACE)
于 2018-04-24T12:32:05.320 回答
1

此正则表达式将按空格分割单词,如空格、制表符、换行符:

String[] str = s.split("\\s+");
于 2020-05-19T10:28:35.987 回答
1
StringTokenizer separate = new StringTokenizer(s, " ");
String word = separate.nextToken();
System.out.println(word);
于 2020-07-29T17:50:24.573 回答
0

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);  
            }  
        }
    }
于 2021-06-22T06:42:07.573 回答
0
class test{
           
    public static void main(String[] args){
                StringTokenizer st= new StringTokenizer("I want to walk my dog.");
                
                while (st.hasMoreTokens())
                    System.out.println(st.nextToken());
         
            }
        }
于 2021-08-04T14:28:47.067 回答
-1
String[] str = s.split("[^a-zA-Z]+");
于 2019-01-21T17:18:06.127 回答