0

我做一个程序。该程序得到一个 utf8 字符串并将其拆分为单词。对于拉丁字符,这很简单。根据空间划分。对于汉字,也很简单。每个字符都是一个词。

如果字符串是混合的怎么办?

我应该怎么办?

我想我可以检测到这个字符是否是中文,或者这个字符是空格分隔的单词还是没有分隔的单词。

这样做的标准方法是什么?

例如我想拆分

或者,也许我应该根据任何非字母数字(包括非拉丁脚本和重音符号上的其他字母数字?)进行拆分。如果是这样,我应该如何进行?是否有一个正则表达式可以匹配任何不是字母数字、重音词、希伯来语 alibeth、阿拉伯语 abjad 等等的东西?

我喜欢马成

I
Like
Horse

我想把北小金駅南口第1个自転车驻车场分成

北
小
金
駅
南
...

因为中文中的每个字符都是单词。

使这个问题变得棘手的是汉字和西方字符之间的分词不同。西文用空格隔开,汉字用空隔开。

我想我们可以在拆分之前先检测字符是否为中文。那会很好,但是我也不知道该怎么做。

4

1 回答 1

1

使用正则表达式 - 使用元字符\b应该捕获所有单词边界字符,无论与它们相关联的语言。

Regex.Split(myString, "\b", RegexOptions.None)
于 2012-09-13T18:32:39.877 回答