2

我以标准方式在 Java 中使用 JEXL:

var script = new JexlBuilder().create().createScript(jexlScript);
var jexlContext = new MapContext(); 
var returnString = (String) script.execute(jexlContext));

假设 jexScript 看起来像:

var paramA = 'AAAA';
var paramB = 'BBBB';
var command = paramA + '\n' + paramB;
return command;

输出是:

AAAA\nBBBB

我的问题是:如何引入新行字符以正确格式化此文本?或任何其他方式在 Jexl 中创建的字符串中获得新的行分隔。

4

1 回答 1

2

我是 Apache JEXL 的新手,但我找到了以下方法:

1.使用多行字符串

var paramA = 'AAAA';
var paramB = 'BBBB';
var command = `${paramA}
${paramB}`;
return command;

多行字符串格式的文字换行符(用反引号分隔)将被保留。使用变量替换来引入其他变量。

2.使用上下文注入换行符作为变量

在您的 Java 代码中,填充上下文:

var jexlContext = new MapContext(); 
jexlContext.set("newline", "\n");

然后在你的脚本中使用它:

var paramA = 'AAAA';
var paramB = 'BBBB';
var command = paramA + newline + paramB;
return command;

3. 使用 Java 风格的 Unicode 转义

这是在版本 3.2 ( JEXL-331 )之前存在但未记录的功能。您可以在字符串文字中使用 Java 样式的 Unicode 转义。的十六进制值为\n0x0a,所以使用:

var command = paramA + '\u000a' + paramB;
于 2021-05-05T03:00:37.320 回答