Я попробовал простое разделение для строки в стиле csv, которая содержит пробелы после запятых, например:
scala> """"First", "SecondAfterSpace"""".split(",")
res0: Array[String] = Array("First", " "SecondAfterSpace"")
scala> res0(0)
res3: String = "First"
scala> res0(1)
res4: String = " "SecondAfterSpace""
Вторая строка результирующего массива содержит непредвиденные двойные кавычки, больше, чем исходная строка.
Это нормально, что он содержит дополнительное пространство в начале, так как я еще не обрезал его. Но я бы ожидал такого же результата, как в следующем примере, с дополнительным начальным пробелом вместо дополнительных двойных кавычек:
scala> """"First","SecondNoSpace"""".split(",")
res1: Array[String] = Array("First", "SecondNoSpace")
Я знаю, что могу обойти эту проблему следующим образом, но я хотел бы понять, делаю ли я что-то не так или это ошибка:
scala> """"First", "SecondAfterSpaceTrimmed"""".split(",").map(_.trim)
res2: Array[String] = Array("First", "SecondAfterSpaceTrimmed")
Просто чтобы убедиться, что я также пробовал все варианты, такие как
.split(',')
.split(""",""")
.split("""\,""")
.split(Array(','))
но все с тем же результатом дополнительных двойных кавычек.
В этом контексте: Из scala-doc я вижу, что используется метод в StringLike. В документации говорится о массиве символов. Тем не менее, я могу использовать регулярное выражение, которое не задокументировано, поэтому у меня возникли подозрения, если он использует метод разделения в строке Java... Я запутался...