Splitting a string with multiple spaces

JavaRegexStringSplit

Java Problem Overview


I want to split a string like

"first     middle  last" 

with String.split(). But when i try to split it I get

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

I tried using String.isEmpty() to check for empty strings after I split them but I it doesn't work in android. Here is my code:

String s = "First  Middle Last";
String[] array = s.split(" ");
for(int i=0; i<array.length; i++) {
  //displays segmented strings here
}

I think there is a way to split it like this: {"first","middle","last"} but can't figure out how.

Thanks for the help!

Java Solutions


Solution 1 - Java

Since the argument to split() is a regular expression, you can look for one or more spaces (" +") instead of just one space (" ").

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

Solution 2 - Java

try using this s.split("\\s+");

Solution 3 - Java

if you have a string like

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

and want to get an array like

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

you should try

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

The {2,} part defines that at least 2 and up to almost infinity whitespace characters are needed for the split to occur.

Solution 4 - Java

This worked for me.

s.split(/\s+/)

var foo = "first     middle  last";

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

Solution 5 - Java

Since split() uses regular expressions, you can do something like s.split("\\s+") to set the split delimiter to be any number of whitespace characters.

Solution 6 - Java

How about using something that is provided out of the box by Android SDK.

TextUtils.split(stringToSplit, " +");

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionsmarti02View Question on Stackoverflow
Solution 1 - JavaridView Answer on Stackoverflow
Solution 2 - JavaAnurag RamdasanView Answer on Stackoverflow
Solution 3 - JavaRoman VottnerView Answer on Stackoverflow
Solution 4 - Javauser5613691View Answer on Stackoverflow
Solution 5 - JavaRussell ZahniserView Answer on Stackoverflow
Solution 6 - JavaJaydeepWView Answer on Stackoverflow