Я попытался простой раскол для Csv стиле строки, которая содержит пробелы после запятых, как это:Scala струноподобные сплит метод создает дополнительные двойные кавычки для ведущих пространств
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. В документации говорится о массиве символов. Тем не менее я могу использовать регулярное выражение, которое не задокументировано, поэтому он сделал меня подозрительным, если он использует метод split в Java String ... Я запутался ...
Более общее регулярное выражение для раскола было бы: '" "", \ p {Пробел} * "" "" – nadavwr
Спасибо за быстрый ответ и регулярное выражение, игнорируя пространство. Таким образом, scala split, похоже, принимает регулярное выражение, несмотря на scala doc, который говорит о разделителях (chars) - нет упоминания о регулярном выражении. – fredfred
@fredfred [строки Scala - строки Java] (http://www.scala-lang.org/api/current/index.html#scala.Predef$ @String=String) и [строки Java имеют метод split, который принимает значение regexp ] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split (java.lang.String)). StringLike сутенеры Java-строка с разделенными методами, которая принимает разделители (-ы) как один символ или массив символов –