我正在尝试在 ColdFusion 中规范化一个字符串。
我想为此使用 Java 类 java.text.Normalizer
,因为据我所知,CF 没有任何类似的功能。
这是我当前的代码:
<cfset normalizer = createObject( "java", "java.text.Normalizer" ) />
<cfset string = "äéöè" />
<cfset string = normalizer.normalize(string, createObject( "java", "java.text.Normalizer$Form" ).NFD) />
<cfset string = ReReplace(string, "\\p{InCombiningDiacriticalMarks}+", "") />
<cfoutput>#string#</cfoutput>
知道为什么它总是输出 äéöè
而不是规范化字符串吗?
最佳答案
在 ColdFusion 中,与 Java 不同,您不需要转义字符串文字中的反斜杠。您当前的正则表达式不会匹配任何不以反斜杠开头的内容,因此不会发生替换。
除此之外,您的代码完全正确,您可以看到输出时字符串的长度是 8,而不是 4。这是 normalize
调用的效果。
但是,请记住它仍然是原始字符串的等价表示,因此您无法从视觉上分辨出差异也就不足为奇了。这是实际的正确 Unicode 呈现。
关于java - 在 ColdFusion 中规范化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11626050/