仅用速度替换字符串的一部分

Replace only part of a string with velocity

我发现无法仅用速度替换字符串的一部分。

假设以下速度模板:

$test
something$test
$test.something

我想用字符串 TEST 替换所有出现的 $test

因此我使用以下代码:

  VelocityContext context = new VelocityContext();
  context.put("test", "TEST");

这是结果,我预计:

TEST
somethingTEST
TEST.something

但我真正得到的是:

TEST
somethingTEST
$test.something

很明显,如果变量名称后有一些文本,Velocity 不会替换变量。

如何替换一个变量,即使它只是字符串的一部分?

您在这里遇到的问题不是“如果变量名称后有一些文本,显然 Velocity 不会替换变量”。

符号'$'用于表示任何行的开头。所以你必须找到一种方法来转义输入字符串中的那个符号,这样'$'的字面意思就不会被考虑

$test.something 导致了问题。

在对象 test 中需要一个变量 something

改用${test}.something...

--干杯,周杰伦