2009-08-17 44 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]+$