【发布时间】:2019-06-13 22:24:07
【问题描述】:
我正在尝试在每个 '{' 处拆分一个字符串。
我的字符串看起来像{RANDOM:4{LETTER:5}}
据我所知,我应该使用String.split() 函数。
我的代码如下:
public static String replaceParams(String str) {
System.out.println(str.split("{"));
}
问题来了。
错误是:
2019-06-13 15:33:23.042 错误 k.k.c.m.CustomKeywordDelegatingMetaClass - ❌非法重复
{
2019-06-13 15:33:23.051 错误 c.k.katalon.core.main.TestCaseExecutor - ❌ 测试用例/KeyWordTester 失败的。原因:java.util.regex.PatternSyntaxException:非法 重复
{
在 java_lang_String$split$0.call(Unknown Source) 在 com.sgds.util.LoadTester.replaceParams(LoadTester.groovy:126) 在 com.sgds.util.LoadTester.modifyFile(LoadTester.groovy:144) 在 com.sgds.util.LoadTester.invokeMethod(LoadTester.groovy) 在 com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:50) 在 KeyWordTester.run(KeyWordTester:16) 在 com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194) 在 com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119) 在 com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:337) 在 com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:328) 在 com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:307) 在 com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:299) 在 com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:233) 在 com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114) 在 com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105) 在 com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(未知 来源)在 TempTestCase1560432797559.run(TempTestCase1560432797559.groovy:21)
我搜索了我的整个代码,我向你保证,没有{ 没有关闭。
当我认为这是编译器语法检查器问题时,我做的第一件事是尝试用它的 ascii 值替换我的{:
System.out.println(str.split(Character.toString((char)123)))
也不行……
你知道问题出在哪里吗?
【问题讨论】:
-
我从未使用过 Groovy,所以我所说的可能无关紧要,但在 Java 中
split使用正则表达式(正则表达式),其中{被视为{n}或{n,m}的开始 量词,例如a{3}代表aaa。要使其成为简单的字符,您需要 escape 它。在 Java 中,您可以使用spit("\\{")手动转义它,或使用split(Pattern.quote("{"))让 Pattern 生成将{表示为文字的正则表达式。
标签: string groovy katalon-studio