Java 用其他字符替换字符串中的字符会产生异常

Java 用其他字符替换字符串中的字符会产生异常,java,jmeter,beanshell,Java,Jmeter,Beanshell,我正在使用正则表达式提取一些值,比如说“ehj113gptaw9rmbgxce2jqh+2rn7tLWFz5JHyhxa+k68ksbe3o5mpvvlu4ihae08dlo7x04mpsvrp7jzihgv0qpzdmjwxzuomvwntqzbph” 我想用“%2B”替换“+”,并将其作为“Ehj113GPTAw9RMbTgxce2jqh%2B2rn7tLWFz5JHyhxa%2bk68ksbe3o5Mpvvlu4ihae08dlo7x04mpsvrp7jzihgV0qpzdmjwxzuom

我正在使用正则表达式提取一些值,比如说
“ehj113gptaw9rmbgxce2jqh+2rn7tLWFz5JHyhxa+k68ksbe3o5mpvvlu4ihae08dlo7x04mpsvrp7jzihgv0qpzdmjwxzuomvwntqzbph”

我想用“%2B”替换“+”,并将其作为“Ehj113GPTAw9RMbTgxce2jqh%2B2rn7tLWFz5JHyhxa%2bk68ksbe3o5Mpvvlu4ihae08dlo7x04mpsvrp7jzihgV0qpzdmjwxzuomvwntqzbph”发送到第二个请求

我怎样才能做到这一点

我已经试过了
replaceAll
replace
,但我在某个地方出了问题

var Connect = vars.get("92_ConnectionToken").toString();
log.info(Connect);
String ConnectToken = Connect.replaceAll("+", "%2B");
String ConnectFinal = ConnectToken.replaceAll("/", "%2F");
vars.put("92_ConnectionToken", ConnectFinal);
log.info(ConnectFinal);
预期结果:

Ehj113GPTAw9RMbTgxce2jqh%2B2rn7tLWFz5JHyhxa%2BK68ksbE3O5MPvvLU4ihAeaE08DlO7X04MpSVRP7jZIHGv0qPzdmJgwXZUOmVwFWNTQZbpH.
此字符串应作为第二个请求的输入发送

实际结果:

2019-05-13 10:37:22,343 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: `` var Connect = vars.get("92_ConnectionToken").toString(); log.info(Connect); Str . . . '' : Typed variable declaration : Method Invocation Connect.replaceAll
2019-05-13 10:37:22,343 WARN o.a.j.m.BeanShellPreProcessor: Problem in BeanShell script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval   Sourced file: inline evaluation of: `` var Connect = vars.get("92_ConnectionToken").toString(); log.info(Connect); Str . . . '' : Typed variable declaration : Method Invocation Connect.replaceAll.

如果要使用
String
特定方法作为
replaceAll
,请将变量定义为
String

String Connect = vars.get("92_ConnectionToken");
您需要将正则表达式特殊字符转义为
+

String ConnectToken = Connect.replaceAll("\\+", "%2B");
正如@kumesana所评论的,您最好使用
replace
方法:

String ConnectToken2 = Connect.replace("+", "%2B");

调用bsh方法时出错:评估源文件:内联评估:
String Connect=vars.get(“92_ConnectionToken”).toString();日志信息(连接);S…'':类型化变量声明:方法调用Connect.replaceAll WARN o.a.j.m.BeanShell预处理器:BeanShell脚本中存在问题。org.apache.jorphan.util.JMeterException:调用bsh方法时出错:评估源文件:内联评估:
String Connect=vars.get(“92_ConnectionToken”).toString();日志信息(连接);S…'':类型化变量声明:方法调用Connect.replaceAll。还在上升error@Yadnesh,添加到应答
String ConnectToken=Connect.replaceAll(“\\+”,“%2B”)或者,你知道,用replace()代替面向regex的replaceAll()replaceAll()是非常不恰当的名称。replace()也将替换所有内容。