문자열이 "ja.v_,a"
인 경우 문자가 아닌 문자를 모두 제거하여 "java"
을 출력 할 수 있습니까? str = str.replaceAll("\\W", "")
을 시도했지만 아무 소용이 없습니다.문자열의 문자 이외의 모든 문자 제거
답변
시도해 볼까요?
System.out.println("ja.v_,a".replaceAll("[^a-zA-Z]", "")) //java
이것은 효과가 있습니다. 감사! – Eragon20
String s = "ja.v_,a";
s = s.replaceAll("[^a-z]", "");
System.out.println(s);
>java
나는 this article을 참고하고 인용하고 싶습니다 :
그래서 귀하의 경우는 다음과 같습니다정규식 예제 및 자습서는 항상 당신에게 "숫자 입력의 유효성을 검사"로 [A-ZA-Z0-9] + 정규식을 제공합니다. 많은 검증 프레임 워크에 내장되어 있습니다. 그리고 그것은 완전히 잘못된 것입니다. 이것은 꽤 좋은 설명이없는 한 당신의 코드에서 결코 나타나서는 안되는 정규식입니다. 그러나이 예는 유비쿼터스입니다. 대신, 올바른 정규식은 [\ P는 {L} 0-9] +
\p{L}
는 "편지"의 유니 코드 정의입니다
str.replaceAll("[^\\p{L}]", "");
System.out.println("ja.v_,a".replaceAll("[^\\p{L}]", ""));
System.out.println("сл-=о-_=во!".replaceAll("[^\\p{L}]", ""));
.
'str.replaceAll ("[^ \ p {L}]"문은 쓸모가 없습니다. 어떻게 든 결과를 사용해야합니다. –
@AndyTurner 사실, 2017 년''a-z "'패턴은 좋은 개발자가 익숙해지기에 가장 좋은 해결책이 아닐 것이라는 것이 요점이었습니다. 이론적 근거는 내가 언급 한 기사에 나와있다. –
이것은 중요한 대답입니다. 나는'\ p {L}'이 "문자"의 유니 코드 정의라는 설명 만 추가 할 것이다. –
String test= "ja.v_,a";
int len=test.length();
String alphaString="";
for(int i=0; i<len; i++){
if (Character.isLetter(test.charAt(i))) {
alphaString=alphaString+test.charAt(i);
}
}
System.out.println(alphaString);
어떤 프로그래밍 언어를 사용하고 있습니까? – Sedrick
'[^ a-z]'제거/바꾸기? (즉, 모든 문자가 아닌 'a..z'기호) –
모든 문자를 검사하는 for 루프를 사용합니다. char 인 경우 문자열로 연결합니다. Character.isAlphabetic()이 시작 지점입니다 – Sedrick