How could I split a String into an array in Kotlin?

JavaArraysStringKotlin

Java Problem Overview


I need to split a String read in from a file into an array of values. I want to split the String at the commas, so for example, if the String read:

"name, 2012, 2017"

The values in the array would be:

  • array index 0 - name
  • array index 1 - 2012
  • array index 2 - 2017

I found this example in Java:

String[] stringArray = string.split(",");

How I could do it in Kotlin?

Java Solutions


Solution 1 - Java

val strs = "name, 2012, 2017".split(",").toTypedArray()

Solution 2 - Java

If we have a string of values that splited by any character like ",":

 val values = "Name1 ,Name2, Name3" // Read List from somewhere
 val lstValues: List<String> = values.split(",").map { it -> it.trim() }
 lstValues.forEach { it ->
                Log.i("Values", "value=$it")
                //Do Something
            }

It's better to use trim() to delete spaces around strings if exist. Consider that if have a "," at the end of string it makes one null item, so can check it with this code before split :

 if ( values.endsWith(",") )
     values = values.substring(0, values.length - 1)

if you want to convert list to Array ,use this code:

      var  arr = lstValues.toTypedArray()
      arr.forEach {  Log.i("ArrayItem", " Array item=" + it ) }

Solution 3 - Java

Simple as it is:

val string: String = "leo_Ana_John"
val yourArray: List<String> = string.split("_")

you get: yourArray[0] == leo, yourArray[1] == Ana, yourArray[2]==John

In this case, just change the "_" from my code to ", " of yours. Se bellow

    val yourArray: List<String> = string.split(", ")

Solution 4 - Java

var newStrg= "853 kB"
val mString = newStrg!!.split(" ").toTypedArray()

Here Split parameter is space

mString[0] = "853"
mString[1] = "kB"

Solution 5 - Java

Split a string using inbuilt split method then using method extensions isNum() to return numeric or not.

fun String.isNum(): Boolean{
   var num:Int? = this.trim().toIntOrNull()
   return if (num != null) true else false
}

for (x in "name, 2012, 2017".split(",")) {
   println(x.isNum())
}

Solution 6 - Java

If you want to use multiple/several delimiters in kotlin split, you need to pass them separately:

 val validUrl = "http://test.com/</a> -".split(">", " ", "<").first()

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
QuestionMichael F.View Question on Stackoverflow
Solution 1 - JavaJK LyView Answer on Stackoverflow
Solution 2 - JavaHamed JalilianiView Answer on Stackoverflow
Solution 3 - JavaThiago SilvaView Answer on Stackoverflow
Solution 4 - JavaSamirView Answer on Stackoverflow
Solution 5 - JavaManikandanView Answer on Stackoverflow
Solution 6 - JavaIkromView Answer on Stackoverflow