使用多个空格分割字符串

63

我想要对一个字符串进行分割,比如说

"first     middle  last" 

使用String.split()方法进行分割。但是当我尝试进行分割时,出现了

String[] array = {"first","","","","middle","","last"}

我尝试在拆分字符串后使用String.isEmpty()来检查空字符串,但在Android中它不起作用。这是我的代码:

String s = "First  Middle Last";
String[] array = s.split(" ");
for(int i=0; i<array.length; i++) {
  //displays segmented strings here
}
我认为可以这样拆分:{"first","middle","last"},但不知道如何做到。
谢谢帮忙!

YOURSTRING.split(/\s+/ig) - ehsan
7个回答

148

由于传递给split()的参数是一个正则表达式,因此您可以使用一个或多个空格(" +")来查找多个空格而不仅仅是一个空格(" ")。

String[] array = s.split(" +");

3
@Kevin,好的,\s 包括的不仅是空格。 - rid
16
我建议在split()之前添加trim():s.trim().split(" +"),以处理类似于“ first middle last ”的情况。 - gamliela
8
我在Chrome中尝试了这个方法,但它对我不起作用。将代码调整为以下形式后就能够正常工作:String[] array = s.split(/\ +/); - Andre M
1
@JohnnyCoder,请查看"贪婪量词" - rid
3
这是Java,不是JavaScript。 - shmosel
显示剩余6条评论

28
尝试使用此代码:s.split("\\s+");

14

如果您有一个像这样的字符串

String s = "This is a test string  This is the next part    This is the third part";

并且想要获得类似的数组

String[] sArray = { "This is a test string", "This is the next part", "This is the third part" }

你应该尝试

String[] sArray = s.split("\\s{2,}");

{2,} 部分定义了至少需要 2 个或更多空格字符才能进行拆分。


7
这个对我有效。
s.split(/\s+/)

var foo = "first     middle  last";

console.log(foo.split(/\s+/));


1
这是Java,不是JavaScript。 - soorapadman

3

split() 方法使用正则表达式,因此您可以像 s.split("\\s+") 这样做,将分割符设置为任意数量的空格字符。


1
如何使用 Android SDK 提供的开箱即用功能呢?
TextUtils.split(stringToSplit, " +");

2
使用Android SDK函数而不是更可移植的代码的原因是什么? - midnight1247

0

如果有人在寻找Kotlin代码

val str = "   fly me   to   the moon  "
println(str.trim().split(" +".toRegex()))

// output - [fly, me, to, the, moon]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接