gradle - 在groovy中用字符%“分割字符串

标签 gradle grails groovy

例如,我们有一个字符串名称测试,如下所示

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/

相关文章:

grails - Grails:自动执行Grails插件安装

java - 如何阻止 JsonBuilder 排列字段顺序

Jenkins:在声明式管道中使用 XmlSlurper

grails - 无法将类 'java.lang.String' 的对象 jar 转换为类 'java.util.Map' 。从 grails 3.0.10 升级到 3.1.11 时

gradle - 引用项目依赖的javadoc

jquery - 用grails和jquery上传文件

java - 判断groovy.sql中Oracle查询结果的数据类型

Android Studio 和 Gradle,@NotNull 参数的参数 0

android - Kotlin 数据绑定(bind) - 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障

grails - 强制Grails升级插件使用的库的正确方法