JEXL 字符串中的换行符
Line break in JEXL String
我在 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
我的问题是:如何引入 new line char 来正确格式化此文本?或者任何其他在 Jexl 中创建的字符串中获得换行符的方法。
我是 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 转义符。 \n
的十六进制值为0x0a,所以使用:
var command = paramA + '\u000a' + paramB;
我在 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
我的问题是:如何引入 new line char 来正确格式化此文本?或者任何其他在 Jexl 中创建的字符串中获得换行符的方法。
我是 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 转义符。 \n
的十六进制值为0x0a,所以使用:
var command = paramA + '\u000a' + paramB;