2009-08-17 39 views
2

有没有方法检查字符串是否仅包含给定语言的字符? (例如日语,希伯来语,阿拉伯语)验证字符串 - 仅限特定语言字符

我想知道是否有一种方法实现这种验证在Javascript \ jquery和c#中?

编辑

我不愿意检查,如果字符串中包含特定语言词典的有效字。我想验证所有字符都属于该语言。

+0

你说的是语言或字符集?他们不一样。 – 2009-08-17 15:41:31

+0

有什么区别? – 2009-08-17 15:42:52

+0

许多语言使用相同的字符集。例如,几乎所有的西欧。 OTOH,示例列表中的每种语言都使用与列表中的其他语言不同的字符集。所有的例子都可以通过字符集来区分。英语和匈牙利语OTOH不能。 – 2009-08-17 16:00:59

回答

4

@CD,所以确信你可以做到这一点。

在C#中,只是:

string str = "this text has arabic characters"; 
bool hasArabicCharacters = str.Any(c => c >= 0xFB50 && c <= 0xFEFC); 
+0

谢谢,你在哪里找到阿拉伯字符的值? – 2009-08-17 16:05:49

+0

@Cd,我使用Windows中包含的字符映射实用程序:) – Cleiton 2009-08-17 16:17:00

+0

请注意,您需要添加[使用System.Linq;]为扩展方法出现:) – Karim 2009-11-03 07:22:02

0

也许使用带有UNICODE字符集的正则表达式?

0

不,你不能检查确切的语言。您只能检查那些没有其他语言的字符。例如cyriclics,hieroglyphs等 就像提示一样,您可以使用google translate api来定义lanuage用户输入文本的方式。

+0

是的,你可以定义阿拉伯语,只需检查阿拉伯语是什么区域的阿拉伯语。 – 2009-08-17 15:46:45

+0

我不愿意检查字符串是否包含特定语言字典的有效单词。我想验证所有字符都属于该语言。 – 2009-08-17 15:48:44

+0

所以首先你确实需要定义一个支持的语言列表。然后检查他们使用的unicode表的哪些区域。 – 2009-08-17 15:57:09

0
internal bool HasArabicCharacters(string text) 
{ 
    Regex regex = new Regex(
     "[\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufc3f]|[\ufe70-\ufefc]"); 
    return regex.IsMatch(text); 
} 
0

这是阿拉伯文字,但我没有测试它的其他语言

^[\u0621-\u064A\040]+$