我在 xtend 的 JvmModelinferrer 中生成一个类字段:
val exp = NodeModelUtils::getNode(rule.expression);
members+=rule.toField("text",rule.newTypeRef('java.lang.String'))[
^static = true
val Procedure1<ITreeAppendable> b = [
append('''"«exp.text.replace('"','').replaceAll("\n"," \\n ")»"''')
]
initializer = b
setFinal(true)
setVisibility(JvmVisibility::PUBLIC)
]
鉴于最初的 exp.text 是
'a
b'
我希望生成的字段如下所示:
String text = "a \n b";
但它看起来像这样:
String text = "a n b";
好像我根本不替换换行符然后我得到:
String text = "a
b";
这当然不会编译。问题似乎是 xtend 正在评估 java 字符串,所以即使“\n”在 java 中被编译为“\n”,在 xtend 中它也会评估为“n”
如何让 xtend 不评估 \n 以便将其保留在生成的 java 字符串中?