簡體   English   中英

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

我的問題是:如何引入換行符以正確格式化此文本? 或任何其他方式在 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM