问题

我需要用空格分割我的String。为此,我试过:

str = "Hello I'm your String";
String[] splited = str.split(" ");

但它似乎不起作用。


#1 热门回答(436 赞)

你有什么应该工作。但是,如果提供的空格是默认的......其他的东西?你可以使用空格正则表达式:

str = "Hello I'm your String";
String[] splited = str.split("\\s+");

这将导致任意数量的连续空格将你的字符串拆分为标记。

作为旁注,我不确定"分裂"是一个词:)我相信作为分裂的受害者的状态也是"分裂"。这是一个棘手的语法事情:-)不要试图挑剔,只是想我会传递它!


#2 热门回答(45 赞)

虽然接受的答案是好的,但请注意,如果输入字符串以空格开头,则最终会出现一个前导空字符串。例如,用:

String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");

结果将是:

splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";

因此,你可能希望在拆分之前修剪字符串:

String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");

#3 热门回答(23 赞)

我确实认为在str.split括号中加上正则表达式可以解决这个问题。 Java String.split()方法基于正则表达式,因此你需要的是:

str = "Hello I'm your String";
String[] splitStr = str.split("\\s+");

原文链接