Java 如何将字符串拆分为单词?

Java 如何将字符串拆分为单词?,java,regex,string,Java,Regex,String,所以我有一些不规则的字符串,我想分成几个单词。字符串可以连续包含多个空格和换行符。 即字符串: "Word1 Word2 Word3 Word4 Word5" 结果是: "Word1 Word2 Word3 Word4 Word5" 单词可以包含特殊字符,但不能包含空格或换行符 使用String.split()api或java.util.strintokenizer。如果需要用一个空格字符替换所有空格(包括换行符),可以使用以下命令: String input =

所以我有一些不规则的字符串,我想分成几个单词。字符串可以连续包含多个空格和换行符。 即字符串:

"Word1     
Word2

Word3 Word4        Word5" 
结果是:

"Word1 Word2 Word3 Word4 Word5"

单词可以包含特殊字符,但不能包含空格或换行符

使用String.split()api或java.util.strintokenizer。

如果需要用一个空格字符替换所有空格(包括换行符),可以使用以下命令:

String input = "word0\r\nword1 word2";
//                       | replace all instances of...
//                       |           | ... one or more whitespace (including line breaks)
//                       |           |       ... with a single space 
System.out.println(input.replaceAll("\\s+", " "));
输出

word0 word1 word2
\\s
[\\t\\n\\x0B\\f\\r]相同

输出:

单词1单词2单词3单词4单词5


如果您具有以下依赖项,则这可能是有意义的:

String yourString = "Word1 \n" + "Word2 \n"
        + "Word3 Word4               Word5";

String result = Joiner.on(" ").join(
        Splitter.onPattern("\\s+").split(yourString));

System.out.println(result);

请参阅
拆分器的说明
/
连接器

这“\\s+”代表什么?连续空格。@user3403621它是一种
模式
特殊构造,由任何空格(
\\s
)组成,一个或多个实例完全匹配(
+
)。请参阅
Pattern
API。我猜您错过了OP的问题。
String yourString = "your string      " +
                "word2       " +
                "word3";

String test = yourString.trim().replaceAll("\\s+", " ");
String[] array = test.split(" |\r");
String yourString = "Word1 \n" + "Word2 \n"
        + "Word3 Word4               Word5";

String result = Joiner.on(" ").join(
        Splitter.onPattern("\\s+").split(yourString));

System.out.println(result);