당신은 a-zA-Z
대신 \p{L}
을 사용할 수 있습니다 :
string = string.replaceAll("[^-_/.,\\p{L}0-9 ]+","");
\p{L}
일치하는 모든 유니 코드 문자에 관계없이 정규 표현식 컴파일에 전달 수정의.
은 참조하십시오 Java test :
List<String> strs = Arrays.asList("[email protected]#Łąka$%^", "Word123-)(=+");
for (String str : strs)
System.out.println("\"" + str.replaceAll("[^-_/.,\\p{L}0-9 ]+","") + "\"");
출력 :
이
"Łąka"
"Word123-"
패턴이를 상세 사항 : [^-_/.,\\p{L}0-9 ]+
패턴이 -
, _
, _
, /
, .
, ,
, 유니 코드 이외의 문자와 일치 문자, ASCII 숫자 및 공백으로 구성됩니다.
이 솔루션을 사용하면 ٠١٢٣٤٥٦٧٨٩
과 같은 유니 코드 숫자가 제거됩니다. 단지 À-ÿ
를 추가 만 일반적인 유럽 문자 이외의 유니 코드 문자를 제거하려면
string = string.replaceAll("(?U)[^-_/.,\\p{Alnum} ]+","");
두 개의 비 편지를 빼기 :
당신은 일치하는 모든 유니 코드 문자와 숫자를 reall하는 Mena's suggested\p{Alnum}
하지만 (?U)
embedded flag option와를 사용할 수있다 ×÷
범위에서 :
string = string.replaceAll("(?U)[^-_/.,A-Za-zÀ-ÿ &&[^×÷]]+","");
특정 문자 집합 만 허용 하시겠습니까? äöüèéâ 등을 포함한 ñ/Ñ 또는 모든 악센트와 마찬가지로? – Felk
네, 저것 ... 나는 포르노와 같은 다른 캐릭터를 얻고 싶지 않습니다. – Faabass
당신은'replaceAll ("...", "")로 아무것도 받아들이지 않거나 "얻습니다" '당신은 "문자를 제거합니다. 무엇을 제거해야합니까? 예제를 제공하십시오. łąka123! @ # $ %^& *() _ + "'에 대한 예상 출력은 얼마입니까? –