在Coldfusion/Java中拆分多语言字符串

lam*_*pie 1 java string coldfusion split

我有一个多语言字符串的文本,如下所示

This is a multi-lingual string.?????????????????????Please help me. This is a multi-lingual string.?????????????????????Please help me
Run Code Online (Sandbox Code Playgroud)

我必须分成不同的语言(在这个例子中,英语和日语).

即,我需要如下字符串,

1. This is a multi-lingual string.
2. ?????????????????????
3. Please help me. This is a multi-lingual string.
4. ?????????????????????
5. Please help me
Run Code Online (Sandbox Code Playgroud)

请帮忙.提前致谢.

Bar*_*aar 9

这是一个非常难的问题,你需要字典来检查句子中的单词,即使那时也没有确定的方法可以做,例如句子:

"战争战争"

可能是"战争(英语)(来自德国战争)奇怪(来自荷兰战争)"但是没有办法区分这些不同的语言.

说实话,如果您的问题定义是"将任何字符串拆分为其组件语言",我不确定它是否可以完成.

编辑:如果您不介意这些恼人的边境案例,您可以查看谷歌的语言检测API:https://code.google.com/p/language-detection/

它声称超过53种语言的精确度达到99%.这对你来说已经足够了.

您还必须将其与一些智能单词分组算法相结合,对字母表类型进行拆分可能是一个良好的开端.您可以使用unicode字符范围正则表达式来拆分字母表类型,例如:/([\u0600-\u06FF]+\s*)+/应匹配句子中用阿拉伯语脚本编写的所有单词组.

如果您正在寻找特定的字母表,可以在维基百科上找到完整的unicode代码列表:https://en.wikipedia.org/wiki/List_of_Unicode_characters

编辑2:现在您已经缩小了问题解决方案,您可以使用简单的正则表达式来完成:/([a-zA-Z,.]+\s*)+/将匹配拉丁文脚本中写入的所有单词组.如果使用了标点符号,您可以在该列表中添加更多标点符号,但请记住以字符串开头或转义,因为它在字符类中具有特殊含义.然后,您可以在div标签中自行替换这些组以解决您的问题.