2012-02-25 36 views
9

Tôi muốn biết liệu có cách nào để phát hiện xem đầu vào của người dùng có trong bộ ký tự Hy Lạp hay không.Phát hiện chuỗi/ngôn ngữ nhập của người dùng

Edit:
Chỉ cần được rõ ràng hơn, tôi cần phải nhận ra ngôn ngữ các loại người dùng và không locale của điện thoại.

Ví dụ: điện thoại của tôi bằng tiếng Anh và giả sử bàn phím của tôi bằng tiếng Nga, getDefault() trả về "vi", nhưng tôi cần phải có "ru" tại thời điểm đó.


Tôi không biết nếu điều này có sẵn trong hộp từ android, có thể là cách tiếp cận để phát hiện mã ký tự của chuỗi và xem có trong bảng chữ cái tiếng Anh hay không. Bất kỳ điểm nào về điều này?

Tôi tưởng tượng cái gì đó như
if character belongs to K then is English
(where K is the essemble of english characters)


Giải pháp:

Cuối cùng tôi đã sử dụng biểu thức chính quy để xác định xem chuỗi là bằng tiếng Anh.

String pattern = "^[A-Za-z0-9. ]+$"; 
if (string.matches(pattern) 
    // is English 
else 
    // is not English 

Nếu ai đó phải đề xuất giải pháp tốt hơn, tôi sẽ đánh dấu nó là câu trả lời.

+0

Các IME chạy nên phù hợp với địa phương của người dùng. Nếu không, tôi không biết nếu có bất cứ điều gì - như là một nhà phát triển ứng dụng - bạn có thể làm để phát hiện/sửa chữa nó. – Pedantic

Trả lời

3
Locale.getDefault().getLanguage().equals("gr") 

Bằng cách khác:

contains(Charset) 

EDIT:

Sau một thời gian nữa của trình duyệt, tôi đã đi qua CharsetDetectorCharacter Set Detection.

Ở đây bạn có phương thức detect() nhưng không chắc cách sử dụng tốt nhất điều này.

+0

Cảm ơn câu trả lời của bạn. Tôi đoán cái này trả về miền địa phương của điện thoại. Tôi cần ngôn ngữ hiện tại của ngôn ngữ bàn phím/đầu vào. – Vame

0

Như Siva gợi ý, bạn có thể kiểm tra ngôn ngữ của người dùng.

Trong Android, điều này có thể được thực hiện bằng cách sử dụng Locale.getDefault(). Mặc dù tôi sẽ không so sánh nó với mã 2 chữ cái, việc triển khai Android hiện tại có mã ngôn ngữ gồm 2 chữ cái, dấu gạch dưới và mã quốc gia gồm hai chữ cái. Tức là, de_US sẽ là German as spoken in the United States.

Đây không phải là cách mà ngành đang di chuyển, mà là kiểu được hỗ trợ tốt nhất của Java 6. Java 7, một khi được Android hỗ trợ nên hỗ trợ các mã ISO 639 alpha-3 có khả năng tương lai hơn.

+0

Cảm ơn bạn. Vui lòng xem câu hỏi đã chỉnh sửa. – Vame

5

Bạn có thể sử dụng phương pháp thay vì mô hình kết hợp sau đây:

boolean isEnglish = true; 
for (char c : s.toCharArray()) { 
    if (Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN) { 
    isEnglish = false; 
    break; 
    } 
} 
+0

Cảm ơn bạn rất nhiều darkmist .... Đây là những gì tôi cần ... Tôi chỉ cần biết isEnglish hay không .. – praveenb

Các vấn đề liên quan