Ký tự được phép là (ít nhất) ký tự đặc biệt A-Z, a-z, 0-9, ö, Ö, ä, ä, å, Å và tiếng Đức, latvian, dân eston (nếu có)? Có phương pháp làm sẵn hay tôi phải tạo danh sách đen (ký tự không được phép) và biểu thức chính quy IsMatch? Nếu không có sẵn sàng làm thế nào để sử dụng danh sách đen?Cách tìm hiểu xem chuỗi có chứa các ký tự số không phải alpha trong C# /. NET 2.0 không?
Trả lời
Tôi không biết các ký tự đặc biệt từ tất cả các ngôn ngữ đó được phân loại như thế nào, nhưng bạn có thể kiểm tra xem phương thức Char.IsLetterOrDigit
có khớp với những gì bạn muốn làm hay không. Nó hoạt động ít nhất là cho các chữ số và chữ tôi thử nghiệm:
string test = "Aasdf345ÅÄÖåäöéÉóÓüÜïÏôÔ";
if (test.All(Char.IsLetterOrDigit)) { ... }
Các Char.IsLetterOrDigit
trả về true cho các ký tự được phân loại trong Unicode như UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter, hoặc DecimalDigitNumber.
Bài kiểm tra là gì.Tất cả? Đó không phải là một phương pháp chuỗi, nó là một số loại phương pháp mở rộng? Hoặc một phương pháp LINQ? – Task
@Task 'Tất cả' là phần mở rộng của chuỗi. Xem http://msdn.microsoft.com/en-us/library/system.string.aspx – mydogisbox
Ah! Phần "Phương pháp mở rộng" của tài liệu là mới đối với tôi, tôi chưa từng thấy điều đó trước đây. Tôi đoán tôi đã quá quen với việc tìm mọi thứ tôi cần trong khu vực "Thuộc tính" hoặc "Phương pháp" trước đó. Cảm ơn! – Task
Điều tra char.IsLetterOrDigit(char)
.
Ví dụ:
myString.All(c => char.IsLetterOrDigit(c));
Chỉ tò mò, nhưng tại sao điều này lại bị bỏ rơi? Theo như tôi có thể nói đó là một cách hoàn toàn hợp lệ để làm những gì OP hỏi. – Flynn1179
Ah .. chỉ có một cái nhìn gần hơn; không bao giờ nhận thấy yêu cầu 0-9 trong đó.Tôi đã sửa đổi câu trả lời của mình để sử dụng 'IsLetterOrDigit' thay vì chỉ' IsLetter'. – Flynn1179
Một cách viết tắt cho điều này là 'myString.All (char.IsLetterOrDigit); ' – gls123
Một danh sách đen cho nhân vật có khả năng :-) khá lớn
Bạn có thể sử dụng các biểu thức chính quy
^[\d\p{L}]+$
để phù hợp với chữ số thập phân và chữ cái, không phân biệt của tập lệnh.
Cụm từ thông dụng này bao gồm một lớp ký tự có chứa ký tự viết tắt \d
- có chứa mọi chữ số (tổng cộng 230 trong BMP) và \p{L}
chứa mọi ký tự Unicode được phân loại là "chữ" (46817 trong BMP). Lớp nhân vật được cho biết sau đó được lặp lại ít nhất một lần và được nhúng giữa ^
và $
- chuỗi bắt đầu và kết thúc neo, do đó, nó khớp với chuỗi hoàn chỉnh.
Đối với một số công cụ regex, vì bạn chỉ quan tâm bằng chữ Latin, rõ ràng, bạn cũng có thể sử dụng
^[\d\p{Letter}]+$
Tuy nhiên, .NET không hỗ trợ này. Regex đầu tiên được đề cập ở trên thực sự nắm bắt mọi thứ là chữ số hoặc chữ cái trong bất kỳ tập lệnh nào. Vì vậy, nó sẽ kết hợp chặt chẽ với các chữ số Ấn Độ hoặc Ả Rập và tiếng Do Thái, Cyrillic và các tập lệnh phi Latin khác. Tùy thuộc vào những gì bạn muốn điều này có thể không thích hợp.
Nếu điều đó đặt ra vấn đề, thì tôi không thấy lựa chọn nào tốt hơn là liệt kê rõ ràng các ký tự bạn muốn cho phép. Tuy nhiên, tôi cho rằng thật nguy hiểm khi giả định rằng văn bản bằng một ngôn ngữ nhất định luôn bị hạn chế đối với tập lệnh của ngôn ngữ đó. Nếu tôi viết tên Séc hoặc Ba Lan bằng văn bản tiếng Đức, thì tôi có thể cần nhiều hơn chỉ là [a-zA-ZäöüÄÖÜß]
.
+1 cho tùy chọn \ p {option} –
cảm ơn! bạn có thể giải thích cách^[\ d \ p {L}] + $ công trình không. Tôi đã kiểm tra trên web nhưng tôi không thể tổng hợp hoàn toàn ... –
Sẽ đơn giản hơn để phù hợp với các ký tự được cho phép để nhận được số tiền hoàn trả sai.
- 1. Làm cách nào để tìm hiểu xem ký tự đầu tiên của chuỗi có phải là một số không?
- 2. Xóa ký tự không phải số và không phải ký tự khỏi một chuỗi?
- 3. Kiểm tra xem chuỗi chứa ký tự không phải chữ số
- 4. Cách tìm hiểu xem tệp có tồn tại trong C#/.NET không?
- 5. T-SQL bỏ tất cả các ký tự không phải là alpha và không phải là số
- 6. Làm cách nào để phát hiện xem chuỗi có chứa bất kỳ ký tự Phải-Trái nào không?
- 7. Làm cách nào để kiểm tra xem chuỗi có chứa ký tự trong C#?
- 8. Tôi làm cách nào để tìm kiếm các hàng chứa ký tự không phải chữ số hoặc chữ số?
- 9. Cách kiểm tra xem ký tự trong chuỗi có phải là một chữ cái không? Python
- 10. cách nhanh chóng để kiểm tra xem một chuỗi ký tự không phải là số
- 11. Kiểm tra xem 2 chuỗi có chứa các ký tự giống nhau không?
- 12. Trong C#, cách kiểm tra xem chuỗi có chứa số nguyên không?
- 13. Làm cách nào để tìm hiểu xem một hội đồng .NET có chứa mã không được quản lý không?
- 14. URL Mã hóa tất cả số không phải là chữ số alpha trong C#
- 15. Cách kiểm tra xem chuỗi có chứa chỉ các ký tự cụ thể
- 16. Cách kiểm tra xem chuỗi có chứa các ký tự khác với các ký tự được chỉ định hay không. (trong Java)
- 17. Các ký tự không phải ASCII trong C
- 18. Làm cách nào để kiểm tra xem chuỗi có chứa các ký tự chữ và số trong mục tiêu C không?
- 19. Không .NET 4.0 có .NET 2.0 không?
- 20. Làm cách nào để xác định xem một Chuỗi có ký tự không phải là chữ và số không?
- 21. Chuỗi ký tự mà không phải thoát khỏi các ký tự đặc biệt?
- 22. Làm cách nào để kiểm tra xem chuỗi có chứa ký tự chữ và số và dấu gạch ngang không?
- 23. Cách kiểm tra xem chuỗi có chứa khoảng trắng không
- 24. Cách tìm hiểu xem cột của mô hình có phải là khóa ngoại không?
- 25. Làm cách nào để phát hiện các ký tự không phải ASCII trong chuỗi?
- 26. Thay thế các ký tự không phải là số
- 27. Cách tìm ký tự đầu tiên trong chuỗi C++
- 28. Cách xác định xem tất cả các ký tự trong một chuỗi có bằng nhau không
- 29. chr cho các ký tự không phải ASCII trong Python
- 30. Làm cách nào để tìm hiểu xem .NET 4.02 có được cài đặt không?
Một chuỗi khác có câu trả lời để xem xét http://stackoverflow.com/questions/2371780/ Có thể cung cấp thông tin chi tiết bổ sung. –
có thể trùng lặp của [. Regular Expression để khớp với bất kỳ loại chữ nào từ bất kỳ ngôn ngữ nào] (http://stackoverflow.com/questions/2949861/net-regular-expression-to-match-any-kind-of-letter- từ bất kỳ ngôn ngữ nào) – GvS