java - 在 ColdFusion 中规范化字符串

标签 java string class coldfusion normalization

我正在尝试在 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/

相关文章:

java - 当另一个 fragment 处于 Activity 状态时如何停止相机 View

java - 截断方法调用

java - 我没有发现我的代码检查字符串是否有错误

java - 如何在 Java 线程上使用共享内存?

C++ 模板继承方案

java - Apache Derby : how can I do "insert if not exists"?

java - android-菜单设置自定义

r - 符号之前/之后的字符

PHP 日语字符串设置为?

c++ - 检查 C++11 枚举类的总顺序(如何实现 operator<)