Chcę wykryć, czy mój edittext
ma angielskie znaki i powiadamiać użytkownika, aby to zmienić, ponieważ chcę tylko perskie znaki dla imienia i nazwiska. jak mogę filtrować edittext
, aby akceptować tylko perskie znaki lub wykrywać angielskie znaki i pokazywać błąd?Jak wykryć, czy edittext ma angielskie znaki?
Odpowiedz
Myślę, że nie jest to łatwe do wykrycia i poinformowania użytkownika o konieczności instruowania. Po prostu możesz zrobić coś takiego. W pliku XML:
<EditText
android:id="@+id/LanguageText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:digits="@string/app_lan" />
W Strings.xml:
<string name="app_lan">YOUR LANGUAGE</string>
Przykład Jeśli angielski:
<string name="app_lan">abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
ur języku samego jak ten.
Znaki perskie są w zakresie: [\u0600-\u06FF]
. Sprawdź poprawność łańcucha za pomocą wyrażenia regularnego.
public final static String PERSIAN_STRING = "ا آ ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی";
public final static String LATIN_STRING = "a b c d e f g h i j k l m n o p q r s t u v w x y z";
if (PERSIAN_STRING.contains(str.toLowerCase()))
lang = "PERSIAN";
if (LATIN_STRING.contains(str.toLowerCase()))
lang = "LATIN";
Co jeśli tekst zawiera: áéíóúçñ ¢ £ – Renan
@Renan i czy są one poprawnymi angielskimi znakami? – user902383
Są. Angielski ma takie słowa jak "resumé", "narzeczony" itp. – Renan
Podsumowując kilka rzeczy tutaj. Ponieważ, @Sergei Podlipaev zauważył, że perskie znaki są w zakresie \u0600
do \u06FF
, można użyć wyrażenia regularnego. Nie jestem pewien, czy poprawnie określam granice, ale to da ci pomysł.
Aby sprawdzić, czy zestaw znaków używany jest język angielski - ^[a-zA-Z0-9]*$
Aby sprawdzić, czy perski zestaw znaków jest używany - ^[\u0600-\u06FF]+$
Spróbuj następujące wyrażenia regularnego wahać perski znaków.
public static final Pattern RTL_CHARACTERS =
Pattern.compile("[\u0600-\u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF]");
Matcher matcher = RTL_CHARACTERS.matcher("Texts");
if(matcher.find()){
return true; // it's RTL
}
Lub Użyj tej metody.
public static boolean textPersian(String s) {
for (int i = 0; i < Character.codePointCount(s, 0, s.length()); i++) {
int c = s.codePointAt(i);
if (c >= 0x0600 && c <=0x06FF || c== 0xFB8A || c==0x067E || c==0x0686 || c==0x06AF)
return true;
}
return false;
- 1. Non-angielskie znaki specjalne w knitr
- 2. Jak wykryć znaki zdefiniowane czcionką?
- 3. Jak przekonwertować znaki tureckie na angielskie w ciągu znaków?
- 4. Jak wykryć, czy wielokąt ma przekroje własne?
- 5. Jak wykryć, czy element ma wysokość "automatyczną"
- 6. Jak ustalić, czy ciąg ma niealfanumeryczne znaki?
- 7. Jak sprawdzić, czy EditText w Androidzie ma emotikon, czy nie?
- 8. Programowo wykryć, czy iPad ma wyświetlacz Retina?
- 9. Jak wykryć, czy plik ma BOM UTF-8 w Bash?
- 10. Jak wykryć, czy procesor ma dobrą obsługę POPCNT?
- 11. Jak wykryć, czy łańcuch ma nową linię podziału?
- 12. getUserMedia - jak wykryć, czy urządzenie rzeczywiście ma kamerę
- 13. Jak można wykryć, czy użytkownik ma klawiaturę przez JavaScript?
- 14. Wstrzykiwanie znaków innych niż angielskie w systemie Android
- 15. EditText: Nie można wpisywać treści, gdy EditText ma fokus czasami
- 16. Rosyjsko-angielskie równoległe słowo Corpus?
- 17. Jak sprawdzić, czy ciąg zawiera litery angielskie (A-Z)?
- 18. Jak wykryć niektóre znaki Unicode w łańcuchu w Ruby?
- 19. InputConnection.commitText (tekst CharSequence, int newCursorPosition) może wyświetlać tylko angielskie znaki i liczby?
- 20. Jak przechowywać znaki spoza angielskiego?
- 21. jaki sposób wykryć, czy dataframe iskra ma kolumnę
- 22. Jak wykryć, czy ustawiono $ _POST?
- 23. Jak wyczyścić EditText przy kliknięciu?
- 24. Jak wykryć, czy przeglądarka obsługuje zdarzenia mouseover?
- 25. wykryć, jeśli nie ma połączenia internetowego
- 26. Jak wykryć, czy muszę zainstalować VCRedist?
- 27. Jak wykryć, czy karta Chrome jest uszkodzona?
- 28. Sortowanie nazw innych niż angielskie za pomocą MySQL
- 29. Jak programowo wyłączyć tekst przewidywany (bez EditText)?
- 30. Jak mogę sprawdzić, czy ciąg zawiera znaki wielobajtowe w JavaScript?
Pomimo różnych znaczników, to pytanie jest możliwy duplikat [Regex do sprawdzenia ciąg wejściowy jest tylko w języku perski] (http://stackoverflow.com/questions/10561590/regex-for-check -the-input-string-is-just-in-persian-language) - ponieważ jedyną istotną częścią jest wyrażenie regularne. – Renan
@Amir_P Czy możesz wkleić swój kod pls? –
Sprawdź w edytowanym tekście mają ciągi A-zi-z przy pomocy ciągów Regx na textchangelistner –