【问题标题】:Groovy: escape curly braces inside stringGroovy:在字符串中转义大括号
【发布时间】:2011-08-09 23:32:52
【问题描述】:

我正在用 groovy 编码,并试图返回一些 javascript。这是我需要返回一个包含大括号的字符串的问题,当然 groovy 将其读取为错误。这是一个简单的例子:

${ i == 0 ? '{' : '}, {' }  

我想退货:
{ 或
}, {
计划简单。

${ i == 0 ? 'should be left brace' : "should be right brace coma left brace" }

大括号可以转义吗,类似于转义引号?
我试过了:

${ i == 0 ? '\{' : '\}, \{' }    

${ i == 0 ? '{{' : '}}, {{' }

谢谢。

【问题讨论】:

    标签: string groovy escaping curly-braces


    【解决方案1】:

    这对我有用:

    def i = 1
    assert "},{" == "${i == 0 ? '{' : '},{'}"
    

    【讨论】:

      【解决方案2】:

      我假设问题出现在 GSP 页面中。您可能遇到的错误应该类似于以下错误:

      expecting ''', found '\n' @ line 57, column 80.
      it) { return i == 0 ? '{' : ' })
      

      一种解决方案是对左右花括号使用 Unicode 表示:

      ${ i == 0 ? "\u007B" : "\u007D,\u007B" }
      

      【讨论】:

      • +1。是的,GStringTemplateEngine 中对 GStrings 的解析远没有编译器的方法那么复杂。它只是寻找下一个“}”,所以没有办法逃脱它。
      • 是的,它是一个 .gsp 页面。我尝试了上面的 unicode 示例。它没有返回任何字符。
      • 您能否提供使用 ${} 表达式的上下文?
      • 它在 grails 视图的
      • 好吧,我有点笨。人们不要忘记它必须是双引号!
      猜你喜欢
      • 1970-01-01
      • 2016-03-15
      • 2017-07-20
      • 2016-01-13
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      相关资源
      最近更新 更多