例如,我们有一个字符串名称测试,如下所示
def test = "HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%",order by id asc,name desc"
所以,分割后我想得到一个类似的结果
test1 = HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%"
test2 = order by id asc,name desc
如何在grooyy中拆分这样的字符串?我尝试通过检查
contains(",")
并使用split
函数来拆分它,但它也会拆分"%Hello,Ram%"
,这不是必需的结果def a = 'HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%",order by id asc,name desc'
def v = a.contains(",")
if(v){
a.split(",")
println a
}
最佳答案
根据您的评论,听起来您真正想做的是找到不在%xxx%分隔符内的逗号并对其进行分割。这实际上是Regex find comma not inside quotes的副本,它具有有关正则表达式如何工作的更多信息。
def r = "(?!\\B%[^%]*),(?![^%]*%\\B)"
def test = """HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%",order by id asc,name desc"""
def result = test.split(r)
在这种情况下,您的
result
将是一个字符串数组(为清楚起见,在此不引用它们):[
HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%"
order by id asc
name desc
]
我想在评论中指出的一点是,asc和名称之间的逗号不在百分号内,因此也将分开。
关于gradle - 在groovy中用字符%“分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61120709/