4

下面的代码无法运行

def map = [name:"Test :: ( %2f %25 \$ * & ! @ # ^)"]
String s = map.inspect()
println Eval.me(s)

得到错误:

Script1.groovy: 1: illegal string body character after dollar sign; 

solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 1, column 30.
   ["name":"Test :: ( %2f %25 $ * & ! @ # ^)"]

但如果字符串包含其他特殊字符,如 \",它可以正常工作。无论如何,如何四处走动?这对我来说很紧急

4

4 回答 4

2

(回应上述跟进)

好的,如果您只是想交换信息,那么您应该使用数据交换格式,例如 XML 或 JSON。我推荐 JSON,因为它轻量级、快速且非常易于使用:

电脑 1

def map = [name:"Test :: ( %2f %25 \$ * & ! @ # ^)"]
def json = new groovy.json.JsonBuilder()
json(map)
println json.toString()

电脑 2

def incoming = '{"name":"Test :: ( %2f %25 $ * & ! @ # ^)"}'
def jsonInput = new groovy.json.JsonSlurper()
def map = jsonInput.parseText(incoming)
println map

请注意,这些功能需要 Groovy 1.8.0 或更新版本。旧版本的 Groovy 有很多示例,而且 Grails 也内置了自己的解析器。

于 2011-09-15T03:38:20.610 回答
0

在字符串周围使用单引号:

def map = [name:'Test :: ( %2f %25 \$ * & ! @ # ^)']

当您使用双引号时,美元字符用于模板

于 2011-09-14T06:14:22.543 回答
0

使用单引号和双反斜杠,例如,

def map = [name:'Test :: ( %2f %25 \\$ * & ! @ # ^)']
String s = map.inspect()
println Eval.me(s)
于 2011-09-14T07:53:34.657 回答
0

我刚刚测试了以下内容,它对我有用

> a = ["guy":"mogr \$ abi"]
Eval.me(a.inspect())["guy"]
mogr $a bi
于 2014-01-09T11:02:19.920 回答