有没有办法在scala中使用split
函数,以便用逗号分隔一行但不包含2个双引号中的逗号?
例如,我有以下内容:
x: String = """"??", "hamburger", "ketchup, mayo, mustard", "pizza""""
我试过这个:
x.split(',')
但它不起作用。然后我考虑删除所有双引号,但仍然无法解决我的问题。
非常感谢任何帮助!
编辑:
以下是我的代码片段,以了解如何将其合并:
val data1 = noheader1.map { line =>
val values = line._1.split(',') //This is what I am trying to change
val name = values(2).replaceAll("\"", ""))
我对scala有点新,对regex更是如此,所以有人可以澄清如何在我的代码中编写那个奇怪的正则表达式,以便我可以获得该行逗号分隔单词的ARRAY吗?
答案 0 :(得分:4)
答案 1 :(得分:0)
您可以使用正则表达式和findAllIn()来代替split(),例如:
val x = """"??", "hamburger", "ketchup, mayo, mustard", "pizza""""
""""[^"]+"""".r.findAllIn(x).toList
这将导致,List(" ??"," hamburger","番茄酱,蛋黄酱,芥末","披萨&#34 ;)
注意:我在示例中使用三引号(""")。
答案 2 :(得分:0)
也许不像其他正则表达式那样优雅,考虑项目之间的分割元素", "
等等
x.split("\",\\s+\"")
Array("??, hamburger, ketchup, mayo, mustard, pizza")
然后在结果数组中,head
"??
应用stripPrefix("\"")
和last
pizza"
申请stripSuffix("\"")
。