Scala: разбиение строки через запятую без игнорирования запятых в кавычках

val l = List(1221, 5656, "JKIWJ, LFC", 151)

Я использую lines.next().split(",") чтобы разделить эту строку, как поместить все содержимое в двойные кавычки ( "JKIWJ, LFC" ), включая запятую вместе? Тогда l(2) должно выглядеть так ( "JKIWJ, LFC" ) и l(3)= 151 .

Я пытаюсь использовать l(2)++l(3) , но запятая исчезает, а l(3) остается ( LFC" ).

Всего 1 ответ


Ваш вопрос немного запутан и запутан, но допустим, у вас есть String которая выглядит примерно так: 1221 , 5656,"JKIWJ, LFC", 151 . И скажем, вы хотите разделить его на все запятые, кроме случаев, когда запятые находятся внутри пары кавычек.

val str = """1221 , 5656,"JKIWJ, LFC", 151"""
val rslt = str.foldRight((false,List(""))) {
    case ('"', (quote, hd::tl)) => (!quote, '"' + hd :: tl)
    case (',', (false, lst))    => (false,  "" :: lst)
    case ( c,  (quote, hd::tl)) => (quote,  c + hd :: tl)
  }._2

тестирование результатов:

rslt.foreach(s => print(s"->$s<-"))  //->1221 <--> 5656<-->"JKIWJ, LFC"<--> 151<-

Есть идеи?

10000