在JSR223中最后一个双斜杠后获取字符串

时间:2018-11-08 09:28:59

标签: java jmeter jsr223

我在JSR223 Sampler中有一个JMeter,要在最后//之后获取字符串。 currentFile命名的字符串包含JMeter变量的名称,该变量包含文件路径。

String filen = vars.get(${currentFile});
filen=filen.replaceFirst(".*//(\\w+)","$1");

我收到错误消息:

  

响应消息:javax.script.ScriptException:   org.codehaus.groovy.control.MultipleCompilationErrorsException:   启动失败:Script80.groovy:8:意外字符:'\'@第8行   第36栏。          filen = filen.replaceFirst(“。* //(\ w +)”,“ $ 1”);                                         ^

2 个答案:

答案 0 :(得分:1)

按照JSR223 Sampler Documentation

  

JMeter在将脚本字段传递给解释器之前先处理函数和变量引用,因此这些引用将只解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如

props.get("START.HMS");
props.put("PROP1","1234");

因此您需要替换此行:

String filen = vars.get(${currentFile});

与此:

String filen = vars.get('currentFile');

请参阅Apache Groovy - Why and How You Should Use It文章,以获取有关JMeter测试中Groovy脚本的更多信息。

答案 1 :(得分:1)

为什么不为此使用Groovy。它有一个不错的运算符:

String filen = vars.get("currentFile");
def result = filen =~ /.*\/\/(.*)/; //matches end of the string after the last //
if (result.hasGroup()) {
    filen = result[0][1]
    log.info("file:"+filen)
}