Scala collections FAQ: How can I convert a Scala Array
to a String? (Or, more, accurately, how do I convert any Scala sequence to a String.)
Solution
A simple way to convert a Scala array to a String is with the mkString
method of the Array class.
Tip: Although I've written "array", the same technique also works with any Scala sequence, including
Array
,List
,Seq
,ArrayBuffer
,Vector
, and other sequence types.
Here's a quick array to string example using the Scala REPL:
scala> val args = Array("Hello", "world", "it's", "me") args: Array[java.lang.String] = Array(Hello, world, it's, me) scala> val string = args.mkString(" ") string: String = Hello world it's me
In this first statement:
val args = Array("Hello", "world", "it's", "me")
I create a Scala array named args
, and in this second statement:
val string = args.mkString(" ")
I create a new String variable named string
, separating each String
in the array with a space character, which I specified when calling the mkString
function.
Using other separator strings
Note that I could have given the mkString
function any String
to use as a separating character, like this:
scala> val string = args.mkString("\n") string: String = Hello world it's me
or like this:
scala> val string = args.mkString(" . ") string: String = Hello . world . it's . me
Converting a Scala Int array to a String
As a final example, you can also use the Scala mkString
method to convert an Int
array to a String
, like this:
scala> val numbers = Array(1,2,3) numbers: Array[Int] = Array(1, 2, 3) scala> val string = numbers.mkString(", ") string: String = 1, 2, 3
In summary, I hope these Scala "Array to String" examples have been helpful.
Specifying a prefix, separator, and suffix with mkString
As one more note, when using mkString
with a Scala array, list, seq, etc., you can also define a prefix, suffix, and element separator, as shown in these examples:
scala> val numbers = Array(1,2,3) numbers: Array[Int] = Array(1, 2, 3) scala> numbers.mkString("[", ",", "]") res0: String = [1,2,3]
scala> numbers.mkString("(", ",", ")") res1: String = (1,2,3)
Those examples show typical prefix, separator, and suffix values, but you can use any String you want for those three values.