Замена символов в строке некоторыми другими символами приводит к исключению - PullRequest
1 голос
/ 13 мая 2019

Я извлекаю некоторое значение с помощью регулярного выражения скажем "Ehj113GPTAw9RMbTgxce2jqh+2rn7tLWFz5JHyhxa+K68ksbE3O5MPvvLU4ihAeaE08DlO7X04MpSVRP7jZIHGv0qPzdmJgwXZUOmVwFWNTQZbpH"

Я хочу заменить '+' на '% 2B' и отправить его во второй запрос как "Ehj113GPTAw9RMbTgxce2jqh%2B2rn7tLWFz5JHyhxa%2BK68ksbE3O5MPvvLU4ihAeaE08DlO7X04MpSVRP7jZIHGv0qPzdmJgwXZUOmVwFWNTQZbpH"

Как мне этого добиться?

Я уже пробовал 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.

1 Ответ

1 голос
/ 13 мая 2019

Если вы хотите использовать String определенные методы как replaceAll, определите переменную как String:

String Connect = vars.get("92_ConnectionToken");

Вам нужно экранировать специальные символы регулярного выражения как +

String ConnectToken = Connect.replaceAll("\\+", "%2B");

Как прокомментировал @kumesana, лучше использовать replace метод:

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