2016-08-30 1 views
1

Ich erstelle eine Android-Anwendung, wo ich eine Zeichenfolge habe. Ich möchte überprüfen, ob diese Zeichenfolge mindestens ein Zeichen enthält, das zur Hindi-Sprache gehört oder nicht.Wie erkennt man, ob eine Zeichenkette mindestens einen Char einer bestimmten Sprache enthält?

Es spielt keine Rolle in welcher Sprache der String ist, aber wenn mindestens ein Zeichen in Hindi ist, muss meine Funktion aufgerufen werden.

Einer der Wege, dies zu tun, vergleicht jedes Zeichen der Zeichenfolge mit allen Unicodes der Hindi-Sprache. Aber wird das nicht zu zeitaufwendig sein? Zum Beispiel werden 50 Zeichen von String und 50 Unicode mit 2500 Vergleichen enden.

Was kann die optimale Lösung sein?

+0

Möchten Sie nur überprüfen, ob die Eingabesprache nicht Englisch ist oder nicht? –

+0

Nein. Ich habe eine Zeichenfolge. Ich möchte überprüfen, ob es ein Zeichen enthält, das zur Hindi-Sprache gehört oder nicht. Der Rest der Zeichenfolge kann alles sein. –

+1

Hier habe ich etwas gefunden, das alle hindi chars drucken soll. https://milindjagre.wordpress.com/2014/06/30/how-to-print-hindi-characters-using-java/comment-page-1/ Also denke, dass, wenn Sie durch die gesamte Eingabe String gehen und überprüfen Sie, ob das Zeichen zwischen den beiden Zahlen 2309 und 2360 liegt. Sie können den Job mit 2n-Vergleichen erledigen (wobei n die String-Länge ist). – steveman

Antwort

2

Ich denke dieser beiden Methoden

Methode 1

boolean isHindi = false; 
for (char c: myString.toCharArray()) { 
    if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.DEVANAGARI) { 
     isHindi = true; 
     break; 
    } 
} 

Methode 2

boolean isHindi = false; 
    for (int k = 0; k < Character.codePointCount(myString, 0, myString.length()); k++) { 
     int c = myString.codePointAt(k); 
     if (c >= 0x0900 && c <= 0x097F) { //Hindi uni-codes are within this range 
      isHindi = true; 
      break; 
     } 
    } 
+0

Ich habe den Teil 'Character.UnicodeBlock.DEVANAGARI' nicht bekommen. Was, wenn ich auch mit anderen Sprachen überprüfen möchte? Nicht sicher, wie würde ich es ändern, wenn ich das gleiche mit anderen Sprachen machen müsste. Nun, ich denke deine zweite Methode ist intuitiver für mich. –

+0

Fast alle wichtigen Sprachen sind in 'Character.UnicodeBlock' enthalten, wie zB Arbic, Gujarati, Bengali, Hebräisch usw. Verwenden Sie' || (oder) ', um mehrere Sprachen zu überprüfen. Schau dir an: - https://docs.oracle.com/javase/7/docs/api/java/lang/Character.UnicodeBlock.html –

+0

hab es geschafft! Danke, und so entpuppst du dich auch als Gujarati. nett –

Verwandte Themen