[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