[java] 문자열에서 특수 문자를 제거하는 방법은 무엇입니까?
다음과 같은 특수 문자를 제거하고 싶습니다.
- + ^ . : ,
Java를 사용하는 문자열에서.
답변
특수 문자로 정의하는 내용에 따라 다르지만 다음을 시도하십시오 replaceAll(...)
.
String result = yourString.replaceAll("[-+.^:,]","");
^
문자는 목록에서 첫 번째 문자가 아니어야합니다 . 문자를 이스케이프해야하거나 “이 문자를 제외한 모든 문자”를 의미하기 때문입니다.
또 다른 참고 사항 : -
문자는 목록의 첫 번째 또는 마지막 문자 여야합니다. 그렇지 않으면 이스케이프 처리하거나 범위를 정의해야합니다 (예 : :-,
” :
~ 범위의 모든 문자를 의미 함 ,
).
문자 위치에 따라 일관성을 유지하기 위해하지 그래서, 당신은 정규 표현식에서 특별한 의미를 갖는 모든 문자를 탈출 할 수 있습니다 (을 다음 목록, 그래서 다른 문자를 인식 완료되지 수있는 것처럼 (
, {
, $
등) :
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
모든 구두점과 기호를 제거하려면 다음 정규식을 시도하십시오. \p{P}\p{S}
(Java 문자열에서는 백 슬래시를 이스케이프해야합니다 🙂 "\\p{P}\\p{S}"
.
세 번째 방법은 다음과 같은 방법이 될 수 있습니다. 문자열에 무엇이 남아 있어야하는지 정확히 정의 할 수 있습니다.
String result = yourString.replaceAll("[^\\w\\s]","");
즉, 단어 문자 (아무래도 0-9 또는 _) 또는 공백이 아닌 모든 항목을 바꿉니다.
편집 : 도움이 될 수있는 몇 가지 다른 패턴이 있습니다. 그러나 모두 설명 할 수는 없으므로 regular-expressions.info 의 참조 섹션을 살펴보십시오 .
다음은 Ray가 제안한 “허용 된 문자 정의”접근 방식에 대한 덜 제한적인 대안입니다.
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
정규식은 구분 기호 (공백, 줄 바꿈 등)가 아닌 모든 언어의 문자가 아닌 모든 항목과 일치합니다. 사용할 수 없습니다 [\P{L}\P{Z}]
(대문자 P는 해당 속성이 없음을 의미합니다). 문자가 공백이 아니고 그 반대의 경우도 마찬가지이므로 모든 것과 거의 일치하는 “문자가 아니거나 공백이 아닌 모든 것”을 의미하기 때문에 사용할 수 없습니다.
유니 코드에 대한 추가 정보
일부 유니 코드 문자는 인코딩하는 다양한 방법 (단일 코드 포인트 또는 코드 포인트 조합)으로 인해 문제를 일으키는 것으로 보입니다. 자세한 내용은 regular-expressions.info 를 참조하십시오.
답변
영숫자를 제외한 모든 문자를 대체합니다.
replaceAll("[^A-Za-z0-9]","");
답변
여기에 설명 된대로
http://developer.android.com/reference/java/util/regex/Pattern.html
패턴은 컴파일 된 정규식입니다. 대부분의 경우, 편의점과 같은 방법
String.matches
,String.replaceAll
그리고String.split
바람직하지만, 같은 정규 표현식으로 많은 작업을 수행해야하는 경우, 한 번 컴파일하고 재사용하는 것이 더 효율적일 수있다. Pattern 클래스와 그 동반자 인 Matcher는 또한 String에 의해 노출 된 소량보다 더 많은 기능을 제공합니다.
public class RegularExpressionTest {
public static void main(String[] args) {
System.out.println("String is = "+getOnlyStrings("!&(*^*(^(+one(&(^()(*)(*&^%$#@!#$%^&*()("));
System.out.println("Number is = "+getOnlyDigits("&(*^*(^(+91-&*9hi-639-0097(&(^("));
}
public static String getOnlyDigits(String s) {
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
public static String getOnlyStrings(String s) {
Pattern pattern = Pattern.compile("[^a-z A-Z]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
}
결과
String is = one
Number is = 9196390097
답변
수업 replaceAll()
방법을 시도하십시오 String
.
여기서 BTW는 메서드, 반환 유형 및 매개 변수입니다.
public String replaceAll(String regex,
String replacement)
예:
String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!";
str = str.replaceAll("[-+^]*", "");
제거하려는 모든 { ‘^’, ‘+’, ‘-‘} 문자를 제거해야합니다!
답변
특수 문자를 제거하려면
String t2 = "!@#$%^&*()-';,./?><+abdd";
t2 = t2.replaceAll("\\W+","");
출력은 다음과 같습니다. abdd.
이것은 완벽하게 작동합니다.
답변
String.replaceAll()
Java 에서 메소드를 사용하십시오 .
replaceAll 은 문제에 충분해야합니다.
답변
다음과 같이 단일 문자를 제거 할 수 있습니다.
String str="+919595354336";
String result = str.replaceAll("\\\\+","");
System.out.println(result);
산출:
919595354336