如何检查用户在文本框中输入的字符串是否是中文? 任何人都可以引导我?c#如何检查用户在文本框中输入的字符串是否是中文?
回答
您可以轻松查看所使用的代码点是否为汉字。这些区域在Unicode character database中定义。
// Warning, this code only works for common Han ideographs inside the BMP. (Surrogate code points will need special care, and additional ranges within the BMP contain rare, historic, and uncommon characters.)
const double hannessThreshold = 0.25d;
const char lowestHanCodepoint = '\u4E00';
const char highestHanCodepoint = '\u9FFF';
string text = myTextBox.Text;
int hanCharacterCount = 0;
foreach (char c in text)
if (lowestHanCodepoint <= c && c <= highestHanCodepoint)
hanCharacterCount++;
double hannessScore = (double)hanCharacterCount/text.Length;
if (hannessScore >= hannessThreshold)
MessageBox.Show("You are typing in Chinese, Japanese, or Korean!");
但是,这还不足以确定它是否完全是中文。 Unicode统一了中文,日文和韩文的表意文字,因此需要进行某种语言分析来区分它们。
如果您告诉我们您为什么要这样做,可以提供更多帮助。也许其他一些方法会更好。
可能您需要使用一种简单的统计方法。统计代码在中文UTF-8符号范围内的字符数,以及不是的字符数。根据你的决定,一个组是否比另一个组大。
请注意,这不适用于输入罗马字中文的人。对于这种情况,您应该应用字典计数方法来查看有多少英文单词匹配。如果大多数单词不匹配,您可以认为它不是英语。
我的猜测是检查正在使用的字符集,如果他们是中文字符输入,我想这会是中文。然而,我认为这是一件很朦胧的事情。如果中文文字是用西文字母书写的呢?不知道你还有什么要检查的。
通用字符集既支持英文又支持中文? – Reinderien 2011-04-13 17:45:17
@Reinderien:正如我所说的,要检查是否有特定语言的东西,需要考虑许多变量,这是相当困难和朦胧的。 – 2011-04-13 17:47:00
如果输入包含4E00-9FFF范围内的Unicode字符,则它包含中文字符,所以语言可能是中文,日文或韩文。
为了猜测它是否为中文,您可能需要检查输入中是否出现中文语言中最常见的字符(请参阅http://www.zein.se/patrick/3000char.html)。或者,检查输入中是否出现了平假名(3040-309F),片假名(30A0-30FF)或汉字(1100-11FF)字符;他们只发生在日本和韩国;如果它们出现在输入中,即使文本包含中文字符,您也可以使用而不是有中文文本。
什么字符集是“4E00-9FFF”? UTF-16? – Reinderien 2011-04-13 17:57:31
@fmunkert:所以如果我需要编写代码我将如何写? – joonshen 2011-04-13 17:59:20
4E00-9FFF是Unicode代码点,它们独立于UTF- *编码。顺便说一下,如果查看二进制UTF-16字符串,在UTF-16中,实际上会看到来自4E00-9FFF的值。 – 2011-04-13 18:00:16
- 1. 如何检查文本框中输入的文本是字母还是数字
- 2. 如何检查用户输入的字符串是否与
- 3. 如何检查用户是否输入字符串值?
- 4. C++如何检查用户输入是否与文件中的输入相同?
- 5. 如何检查用户输入是否已存在于文本文件中python
- 6. 如何在Objective-C中检查输入是双字符还是字符串?
- 7. 如何在多个文本框中检查输入是否为数字?
- 8. 如何检查字符串中的三个用户输入词是否相同?
- 9. 如何检查用户是否在scanf中输入空行c
- 10. 如何检查用户是否未输入C中的全部空白字符
- 11. 检查文本插入符号是否在AutoHotkey中的文本框中
- 12. 检查输入是否是一个循环中的字符串
- 13. 检查用户输入是否=定义的字符串
- 14. 如何检查字符串是否包含C#中的文本Winforms
- 15. 如何检查字符串是否包含C#中的字符?
- 16. 如何检查用户输入的字符串是否包含在选定的字符串中?
- 17. 检查输入的文本是否仅使用英文字母
- 18. 如何在golang中检查文件是否包含字符串?
- 19. 如何检查输入是整数,字符串还是float C++
- 20. 如何检查在文本框中输入的单词是否拼写正确?
- 21. 如何在用户输入文本框中替换文本框中的字符? (在C#中)
- 22. 检查用户输入是否在txt文件中,批次为
- 23. 如何检查字符串是否在字符串列表中
- 24. 在写入文件之前检查文件中是否存在字符串/字
- 25. 易于检查用户输入是否是perl中的数字?
- 26. 在html文本框中输入数字,并用php检查用户是否存在于mysql数据库中
- 27. 如何检查一个字符串是否包含zalgo文本?
- 28. 检查字符串是否为回文
- 29. 我如何检查是否有用户在输入文本框中使用php键入CTRL + S(控件+ s)?
- 30. 如何检查,如果用户输入是Python中的字符串3
感谢您的帮助! – joonshen 2011-04-13 18:20:00
原因我在做中文OCR。让使用者可以训练系统学习新的汉字。所以我需要限制用户输入其他语言,但只限于中文。 – joonshen 2011-04-14 12:49:17