Примечание: Я должен был упростить свой фактический прецедент, чтобы избавить SO от множества предысторий. Поэтому, если ваша первая реакция на этот вопрос: , почему бы вам это сделать, поверьте мне, мне просто нужно.Двойное выскальзывание изнутри выражения Groovy
Я пытаюсь написать выражение Groovy, которое заменяет двойные кавычки («"
»), которые появляются в строке с одиночными кавычками («'
»).
// BEFORE: Replace my "double" quotes with 'single' quotes.
String toReplace = "Replace my \"double-quotes\" with 'single' quotes.";
// Wrong: compiler error
String replacerExpression = "toReplace.replace(""", "'");";
Binding binding = new Binding();
binding.setVariable("toReplace", toReplace);
GroovyShell shell = new GroovyShell(binding);
// AFTER: Replace my 'double' quotes with 'single' quotes.
String replacedString = (String)shell.evaluate(replacerExpression);
Проблема заключается в том, что я получаю ошибку компиляции в строке, где я назначу replacerExpression
:
Синтаксис ошибки на маркер "" toReplace.replace ("", {ожидается
Я думаю, это потому, что мне нужно избежать строки, содержащей символ двойной кавычки ("" "), но поскольку это строка внутри внутри строки, я не уверен, как правильно ее избежать. идеи? Спасибо заранее!
Благодаря @ataylor (+1), но ваше предложение производит следующий компилятор rrors: 'Несколько маркеров на этой линии \t - Левая рука присваивания должна быть переменной \t - строка буквальной не правильно закрыт двойная кавычка \t - Ошибка синтаксиса, вставить выражение «AssignmentOperator Expression» для завершения Назначение \t - Ошибка синтаксиса, вставить «;» для завершения Заявление \t - Синтаксическая ошибка на токенах (ожидается вместо этого – IAmYourFaja
@IAmYourFaja Второе решение использовать '' "" 'работает безупречно. Как вы запускаете скрипт? – dmahapatro
О, я вижу. Внешний код - Java, я не обновил ответ, чтобы показать, как процитировать его на Java. – ataylor