允許的字符是(至少)A-Z,a-z,0-9,ö,Ö,ä,ä,Å,Å和德語,拉脫維亞語,愛沙尼亞語(如果有)特殊字符?有沒有現成的方法,或者我是否需要製作黑名單(非允許的字符)和正則表達式IsMatch?如果沒有現成的如何使用黑名單?如何查找字符串是否包含C#/。NET 2.0中的非字母數字字符?
回答
我不知道如何對所有這些語言中的特殊字符進行分類,但是您可以檢查Char.IsLetterOrDigit
方法是否與您想要的匹配。它的工作原理至少在我所測試的數字和字母:
string test = "Aasdf345ÅÄÖåäöéÉóÓüÜïÏôÔ";
if (test.All(Char.IsLetterOrDigit)) { ... }
的Char.IsLetterOrDigit
返回true,對於Unicode中歸類爲UppercaseLetter,LowercaseLetter,TitlecaseLetter,ModifierLetter,OtherLetter,或DecimalDigitNumber字符。
什麼是test.All?這不是一個字符串方法,它是一種擴展方法嗎?或者一個LINQ方法? – Task 2011-08-29 14:07:16
@Task'All'是字符串的linq擴展。請參閱http://msdn.microsoft.com/en-us/library/system.string.aspx – mydogisbox 2011-10-06 16:25:01
啊!文檔中的「擴展方法」部分對我來說是新的,我以前從未見過。我想我已經習慣於在早期的「屬性」或「方法」區域中找到所需的所有東西。謝謝! – Task 2011-10-07 13:31:09
調查char.IsLetterOrDigit(char)
。
例如:
myString.All(c => char.IsLetterOrDigit(c));
一種字符黑名單可能是相當大的:-)
您可以使用正則表達式
^[\d\p{L}]+$
匹配十進制數字和字母,不管的腳本。
這個正則表達式由包含速記\d
字符類的 - 它包含(在BMP 230總共)每個數字和\p{L}
包含分類爲「字母」(46817在BMP)每Unicode字符。所述字符類別然後被重複至少一次並被嵌入在^
和$
之間 - 字符串開始和結束錨點,因此它匹配完整字符串。
對於一些正則表達式引擎,因爲你只是在拉丁字母興趣,很明顯,你也可以使用
^[\d\p{Letter}]+$
然而,.NET不支持此功能。上面提到的第一個正則表達式實際上捕獲了任何腳本中的數字或字母的所有內容。所以它會忠實地匹配印度或阿拉伯數字和希伯來語,西里爾文和其他非拉丁文字。取決於你想要什麼,這可能不合適。
如果這樣會造成問題,那麼我看不出更好的選擇,而不是明確列出您想要允許的字符。不過,我認爲假定某種語言的文本總是限制於該語言的腳本是很危險的。如果我要用德文寫一個捷克或波蘭名字,那麼我可能需要的不僅僅是[a-zA-ZäöüÄÖÜß]
。
+1 \ p {option} – 2010-06-17 12:51:31
謝謝!你能否解釋一下^ [\ d \ p {L}] + $是如何工作的。我從網上查了一下,但是我不能總結它... – 2010-06-17 13:22:23
匹配允許的字符會獲得虛假的回報會更簡單。
- 1. C++ 11 - Unicode字符串 - 查找是否包含非ASCII字符
- 2. 如何確定一個字符串是否包含非字母數字字符?
- 3. 查找字符串是否包含字
- 4. 如何檢查字符串是否包含C#中的字符?
- 5. 如何檢查字符串是否包含字母表中的任何字母?
- 6. c# - 檢查字符串是否包含字符和數字
- 7. 檢查一個字符串是否包含數字和字母
- 8. PHP檢查字符串是否包含一些字母/數字
- 9. 檢查字符串是否包含字母數字
- 10. 檢查字符串中是否包含非字母數字,除了下劃線
- 11. 檢查字符串中是否有非字母和非數字
- 12. 如何在Javascript中檢查字符串包含字母字符
- 13. 檢測字符串中是否包含非字母
- 14. 如何檢查字符串是否只包含英文字母?
- 15. 如何檢查字符串是否包含特殊字母?
- 16. 檢查字符串是否包含字符集中的字符
- 17. 查找一個字符串是否包含除數字之外的非數字?
- 18. 如何檢查是否字符串包含字符串數組字符串
- 19. 檢查字符串中是否包含字符和數字
- 20. 檢查字符串是否在PHP中不包含任何字母字符?
- 21. 查找字符串是否包含字符串
- 22. 檢查字符串是否包含任何非數字字符 - 沒有庫 - Java
- 23. 如何檢查是否字符串包含數字符號
- 24. 檢查字符串是否包含字(不是子字符串!)
- 25. 在非字母字符串中查找字符串
- 26. 如何檢查字符串是否包含PowerShell中的數字
- 27. Lua:如何檢查一個字符串是否只包含數字和字母?
- 28. Postgresql檢查字符串中是否包含很多字母
- 29. 檢查字符串中是否包含大寫字母「inside」
- 30. 檢查字符串是否僅包含英文字母,數字和符號
另一個線程有問題的答案http://stackoverflow.com/questions/2371780/可能會提供更多的見解。 – 2010-06-17 12:57:41
[.net正則表達式匹配來自任何語言的任何種類的字母]的可能重複(http://stackoverflow.com/questions/2949861/net-regular-expression-to-match-any-kind-of-letter-從任何語言) – GvS 2010-06-17 12:59:13