2014-10-14 12 views
12

Verwenden von Java, um festzustellen, ob ein String chinesische Zeichen enthält?Ermitteln des chinesischen Zeichens in Java

String chineseStr = "已下架" ; 

if (isChineseString(chineseStr)) { 
    System.out.println("The string contains Chinese characters"); 
}else{ 
    System.out.println("The string contains Chinese characters"); 
} 

Können Sie mir bitte helfen, das Problem zu lösen?

Antwort

27

Jetzt würde Character.isIdeographic(int codepoint) sagen, ob der Codepunkt ein CJKV (chinesisch, japanisch, koreanisch und vietnamesisch) Ideograph ist.

Näher verwendet Character.UnicodeScript.HAN. So

:

System.out.println(containsHanScript("xxx已下架xxx")); 

public static boolean containsHanScript(String s) { 
    for (int i = 0; i < s.length();) { 
     int codepoint = s.codePointAt(i); 
     i += Character.charCount(codepoint); 
     if (Character.UnicodeScript.of(codepoint) == Character.UnicodeScript.HAN) { 
      return true; 
     } 
    } 
    return false; 
} 

Oder in Java 8:

public static boolean containsHanScript(String s) { 
    return s.codePoints().anyMatch(
      codepoint -> 
      Character.UnicodeScript.of(codepoint) == Character.UnicodeScript.HAN); 
} 
+0

Ich mag die Java8 One –

+1

isIdeographic() und UnicodeScript sind nur JDK 1.7. Aber in Fonts wie Consolas sind die ideografischen Zeichen oft mehr oder weniger zwei Leerzeichen breit, so dass ein Fehler carret durch einfaches Zählen der Zeichen, sei es Surrogat oder nicht, gut funktioniert. –

+0

@ j4nbur53 danke für die Erwähnung [** Character.isIdeographic (cp) **] (http://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isIdeographic-int-) , Teil von Java seit 1.7. –

1

Sie können mit Google versuchen API oder Language Detection API

Spracherkennung API enthält einfache Demo. Sie können es zuerst versuchen.

+1

Diese erkennt Sprachen, nicht Zeichen. –

Verwandte Themen