我有一个unicode字符串列表。我想测试是否" \ u"是每个字符串元素中的子字符串,以便针对特定情况采取行动,如何实现这一目标?
我是用Python编程的。我在Python中使用日语到英语的dict,我打算将每个字符串中的日语替换为相应的英语单词。
在下面的例子中,\ u819c确实对应一个日文字符,\ u539a对应另一个日文字符,它们一起成为日文单词。我有一个字典,将这个单词映射到英语,现在我要替换 " \ u819c \ u539a"用英文单词。因为日语和英语是混合的,我想要做的是首先确定它是纯粹的asii字符串还是unicode字符串。这就是为什么我要检查" \ u"在字符串中
[u'\u819c\u539a_act', u'wild\u5e45', u'Hello_world', u'hello']
我希望答案是
True, True, False, False
答案 0 :(得分:0)
您可以做的最简单的事情是将每个字符串视为Unicode字符串,并查看字符串是否包含Unicode代码点超过您选择的某个值的字符。请考虑以下Java代码:
public static void main(String[] args) {
char[] c1 = new char[]{'\'', '\u819c', '\u539a', '\u0061', 'a'};
String[] strs = new String[]{new String(c1)};
for (String s : strs) {
s.codePoints().forEach(System.out::println);
}
}
在这里,我从您使用的字符串中选择了某些字符。运行此程序打印:
39
33180
21402
97
97
请注意,第四个和第五个字符相同,但一个字符表示为unicode sequence。你会认为字符“a”表示为\u0061
“Unicode字符”吗?理想情况下,您应该,因为每个字符都有一个Unicode代码点。但话又说回来,你应该做什么取决于你的要求。
第二和第三个角色是你似乎对识别感兴趣的东西。并且您想知道字符串是否包含这样的字符(可能是中文字符)。如果您正在寻找,那么您应该参考Unicode规范,找出您想要识别的字符(或其范围)的代码点,并按照您需要的方式处理包含它们的字符串。
因此,在上面的代码中你做了类似
的事情 s.codePoints().filter(c -> c > 4296).forEach(System.out::println);
你可以过滤掉非中文字符,产生输出:
33180
21402