2016-07-10 14 views
-1

i gefolgt sind, dass linkJava ersetzen japanische Zeichen mit \ p {} Katakana regulären Ausdruck

und der Benutzer "slevithan" Angebot mit \p{Katakana}

public static void main(String[] args) { 
    String str = "マイポケット (1).csv"; 
    str= str.replaceAll( "[\\p{Katakana}]", "_");//.replaceAll("\\p{Z}", "_"); 
    System.out.println(str); 
} 

, aber ich erhalte eine Fehlermeldung:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown character property name {Katakana} near index 12 
[\p{Katakana}] 

Ich arbeite mit Java 8. Wie lautet die korrekte Syntax zum Überprüfen japanischer Zeichen mit String replaceAll?

+0

Haben Sie mit 'javac -encoding UTF-8' kompiliert? –

+0

oder versuchen Sie 'str = str.replaceAll (" [\\ p {InKatakana}] "," _ ");' – rock321987

+1

dieser Buchstabe ポ wird nicht als Katakana erkannt, was es ist. kannst du mir helfen? – 2Big2BeSmall

Antwort

0

Die beste Lösung mit dieser Regular-Expression war, als mit negativem Vorgriff arbeitete.

str.replaceAll("(?![-,.,/p{Han}/p{Hiragana}/p{Katakana},\\p{IsAlphabetic}\\p{IsDigit}])[\\p{Punct}\\s]", "_"); 
-1

ich brauchte Englisch und Japanisch Buchstaben

dass regulärer Ausdruck den Trick zu unterstützen:

str.replaceAll( "[/p{Han}/p{Hiragana}/p{Katakana}&&[^\\.^\\p{IsAlphabetic}^\\p{IsDigit}^-]]", "_"); 
+1

'[\\ p {InKatakana} \\ w]' funktioniert auch, wenn Sie das englische Zeichen – rock321987

+2

wollen und warum benutzen Sie '^' dreimal? – rock321987

+1

die Verwendung von/p es funktioniert in Java 8 - das ist genau wie schreiben \\ p – 2Big2BeSmall