替换字符串的最后一个字符或数字 |自由标记

Replace the last character or number of a string | Freemarker

我需要检查 ${string} 的最后一个字符数是否等于 9。 我必须处理的字符串或数字是 8315191351。 但是我不知道如何正确地做到这一点。我已经尝试过类似的东西: ${string?replace((string.length)-1,"9")}

最后应该有而不是 831 --> 8391351 --> 1359 等等。

关于我如何存档的任何建议?

哦,顺便说一下。如果我使用上面的功能,则会出现此错误消息: Script error: You have used ?number on a string-value which is not a number (or is empty or contains spaces). 我尝试的也是: code snippet 因为原始数字有点像 831.896.

您可以使用 string slicing 保留除最后一个字符以外的所有字符,如下所示:

<#assign string = "1234">
<#assign string = string[0..<string?length-1] + "9">
${string}

结果:

1239

既然要替换那个东西,就用?replace。这会将最后一个字符替换为 9,如果最后一个字符不是 9 的数字:

${s?replace("[0-8]$", '9', 'r')}