-3

I have a string:

var string = "PRODUCTIDENTIFIER|UTLEVEL10|UTLEVEL10DESCRIPTION|UTLEVEL15|UTLEVEL15DESCRIPTION|UTLEVEL17|UTLEVEL17DESCRIPTION|UTLEVEL20|UTLEVEL20DESCRIPTION|UTLEVEL30|UTLEVEL30DESCRIPTION|ACCT_YR|UTCODE"

When I try to do string.split("|"), it ends up giving me all the letters of all words in an array like:

scala> string.split("|")
res0: Array[String] = Array(|, P, R, O, D, U, C, T, I, D, E, N, T, I, F, I, E, R, |, U, T, L, E, V, E, L, 1, 0, |, U, T, L, E, V, E, L, 1, 0, D, E, S, C, R, I, P, T, I, O, N, |, U, T, L, E, V, E, L, 1, 5, |, U, T, L, E, V, E, L, 1, 5, D, E, S, C, R, I, P, T, I, O, N, |, U, T, L, E, V, E, L, 1, 7, |, U, T, L, E, V, E, L, 1, 7, D, E, S, C, R, I, P, T, I, O, N, |, U, T, L, E, V, E, L, 2, 0, |, U, T, L, E, V, E, L, 2, 0, D, E, S, C, R, I, P, T, I, O, N, |, U, T, L, E, V, E, L, 3, 0, |, U, T, L, E, V, E, L, 3, 0, D, E, S, C, R, I, P, T, I, O, N, |, A, C, C, T, _, Y, R, |, U, T, C, O, D, E)

What I actually expected was the string will be split based on the | mark. Any idea as to why this does not work?

Andronicus
  • 25,419
  • 17
  • 47
  • 88
Sparker0i
  • 1,787
  • 4
  • 35
  • 60

3 Answers3

1

| is a regex special character.

Try string.split("\\|")

Terry Dactyl
  • 1,839
  • 12
  • 21
1

You can also use the split that takes a single character.

string.split('|')
// val res: Array[String] = Array(
//   PRODUCTIDENTIFIER,
//   UTLEVEL10,
//   UTLEVEL10DESCRIPTION,
//   UTLEVEL15,
//   UTLEVEL15DESCRIPTION,
//   UTLEVEL17,
//   UTLEVEL17DESCRIPTION,
//   UTLEVEL20,
//   UTLEVEL20DESCRIPTION,
//   UTLEVEL30,
//   UTLEVEL30DESCRIPTION,
//   ACCT_YR,
//   UTCODE
// )

Anyways, next time take a look to the docs. Or Google more hard, this exact question was asked the last week.

0

You need to escape it:

scala> string.split("\\|")
res0: Array[String] = Array(PRODUCTIDENTIFIER, UTLEVEL10, UTLEVEL10DESCRIPTION, UTLEVEL15, UTLEVEL15DESCRIPTION, UTLEVEL17, UTLEVEL17DESCRIPTION, UTLEVEL20, UTLEVEL20DESCRIPTION, UTLEVEL30, UTLEVEL30DESCRIPTION, ACCT_YR, UTCODE)
Andronicus
  • 25,419
  • 17
  • 47
  • 88