Tôi đang cố gắng thực hiện một phương pháp để phát hiện các chuỗi được viết bằng ngôn ngữ từ phải sang trái trong Java. Tôi đã đến với this question làm một cái gì đó tương tự trong C#.
Bây giờ tôi cần phải có một cái gì đó như thế nhưng được viết bằng Java.
Bất kỳ trợ giúp nào được đánh giá cao.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?
Trả lời
tôi đã đưa ra đoạn mã sau:
char[] chars = s.toCharArray();
for(char c: chars){
if(c >= 0x600 && c <= 0x6ff){
//Text contains RTL character
break;
}
}
Đó không phải là rất hiệu quả hoặc cho rằng vấn đề một cách chính xác, nhưng có thể đưa ra một ý tưởng.
Có lẽ đây sẽ giúp:
http://en.wikipedia.org/wiki/Right-to-left_mark
Nên có một char Unicode, cụ thể là U + 200F, khi một chuỗi rtl có mặt.
Trân
Câu hỏi là cũ nhưng có lẽ người khác có thể có cùng một vấn đề ...
Sau khi thử một số giải pháp tôi đã tìm thấy một trong đó làm việc cho tôi:
if (Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT
|| Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
|| Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
|| Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
) {
// it is a RTL string
}
Điều này sẽ không hoạt động, vì văn bản RTL được viết mà không có các dấu này. – Liggliluff
Dưới đây là phiên bản cải tiến của câu trả lời Darko của:
public static boolean isRtl(String string) {
if (string == null) {
return false;
}
for (int i = 0, n = string.length(); i < n; ++i) {
byte d = Character.getDirectionality(string.charAt(i));
switch (d) {
case DIRECTIONALITY_RIGHT_TO_LEFT:
case DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
case DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
case DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
return true;
case DIRECTIONALITY_LEFT_TO_RIGHT:
case DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
case DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
return false;
}
}
return false;
}
mã này làm việc cho tôi cho tất cả các trường hợp sau đây:
בוקר טוב => true
good morning בוקר טוב => false
בוקר טוב good morning => true
good בוקר טוב morning => false
בוקר good morning טוב => true
(בוקר טוב) => true
- 1. Làm cách nào để phát hiện các ký tự không phải ASCII trong chuỗi?
- 2. Làm cách nào để kiểm tra xem chuỗi có chứa ký tự trong C#?
- 3. Kiểm tra xem chuỗi có chứa bất kỳ chuỗi nào trong một mảng
- 4. Python: Làm cách nào để kiểm tra xem chuỗi unicode có chứa một ký tự được sắp xếp không?
- 5. Làm cách nào để phát hiện chuỗi ký tự bằng type_traits?
- 6. PHP Regex Bất kỳ ký tự nào
- 7. Cách dễ nhất để kiểm tra xem chuỗi có chứa bất kỳ thẻ hình ảnh nào không?
- 8. Làm cách nào để kiểm tra xem chuỗi có chứa ký tự & khoảng trắng, không chỉ khoảng trắng?
- 9. 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?
- 10. Làm cách nào để kiểm tra xem chuỗi có chứa hai ký tự dấu hoa thị không?
- 11. Làm cách nào để kiểm tra xem ArrayList có chứa bất kỳ phần tử nào của một ArrayList khác không?
- 12. Sử dụng Java Regex, cách kiểm tra xem chuỗi có chứa bất kỳ từ nào trong tập hợp không?
- 13. Làm cách nào để nhập bất kỳ ký tự Unicode nào vào văn bản tuyệt vời?
- 14. Làm cách nào để kiểm tra xem chuỗi chuỗi có chứa một chuỗi trong JavaScript không?
- 15. Làm thế nào để kiểm tra xem bất kỳ ký tự tiếng Ả Rập tồn tại trong chuỗi (javascript)
- 16. Làm cách nào để phát hiện xem có bất kỳ phần tử con nào trong phần tử cha có một lớp nhất định không?
- 17. Làm cách nào để đảo ngược chuỗi có chứa các ký tự kết hợp trong Perl?
- 18. Bất kỳ cách nào để phát hiện xem bảng điều khiển trình duyệt có thể hiển thị màu không?
- 19. NSPredicate khớp với bất kỳ ký tự nào
- 20. Làm cách nào để kiểm tra xem chuỗi Perl có chứa chữ cái không?
- 21. Làm cách nào để biết chuỗi có chứa các ký tự bằng tiếng Hebrew bằng PHP không?
- 22. Làm cách nào để chuyển đổi chuỗi chứa chuỗi thoát ký tự thành char?
- 23. Cách phát hiện xem trang HTML có chứa video không?
- 24. Làm cách nào để xác thực xem bình đã ký có chứa dấu thời gian không?
- 25. JSON chỉ định "bất kỳ ký tự UNICODE nào"?
- 26. Cách phát hiện xem chuỗi có chứa ít nhất một số không?
- 27. Cách kiểm tra xem chuỗi có chứa chỉ các ký tự cụ thể
- 28. Python: xác định xem có bất kỳ mục nào theo thứ tự không bằng bất kỳ mục nào khác
- 29. Làm cách nào để kiểm tra xem kết quả SQL có chứa ký tự dòng mới không?
- 30. Làm cách nào để phát hiện các ký tự không thể in trong .NET?
Bạn nên sử dụng (c> = 0x5D0 && c <= 0x6ff) để bao gồm tiếng Do Thái, cũng là ngôn ngữ RTL. –