我有一个类似下面的记录。
1,2018,Abc,2018-04-19,Abc,b,n,0,Abc,33,0,Abc,"Sql,Xyz",Abc,Abc,
我想用逗号分隔符来分割字符串,但我希望Sql,Xyz作为单个字符串,而不是像“Sql和Xyz"这样的两个不同的字符串。有人能帮帮我吗。提前谢谢。
发布于 2018-06-08 04:38:31
这可能对你有用。
def mySplit(str: String): List[String] = {
var elems = List[String]()
// break down by quotes first
val quotes = str.split("\"")
for(i <- 0 to quotes.length - 1) {
if(i % 2 == 0) {
// break down by commas second
val subelems = quotes(i).split(",")
for(j <- 0 to subelems.length - 1) {
if(!subelems(j).isEmpty)
elems = elems :+ subelems(j)
// ignore empty elements
}
} else {
// save "whole strings" and
// don't break into commas
elems = elems :+ quotes(i)
}
}
return elems
}
像这样使用它:
// quick test
val str = "1,2018,Abc,2018-04-19,Abc,Abc,Abc,b,n,0,Abc,33,0,Abc,\"Sql, Xyz\",Abc,Abc"
val list = mySplit(str)
发布于 2018-06-09 02:49:50
我已经这样做了,通过使用如下所示的regex
val str= "1,2018,Abc,2018-04-19,Abc,Abc,Abc,b,n,0,Abc,33,0,Abc,\"Sql, Xyz\",Abc,Abc"
val list=str.split(",(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)")
list.foreach( x => println(x))
https://stackoverflow.com/questions/50747855
复制相似问题