仅用速度替换字符串的一部分
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
...
--干杯,周杰伦
我发现无法仅用速度替换字符串的一部分。
假设以下速度模板:
$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
...
--干杯,周杰伦