[java] 문자열에서 단일 문자를 제거하는 방법

자바의 String의 개별 문자를 액세스하기 위해, 우리는있다 String.charAt(2). Java에서 String의 개별 문자를 제거하는 내장 함수가 있습니까?

이 같은:

if(String.charAt(1) == String.charAt(2){
   //I want to remove the individual character at index 2. 
}



답변

StringBuilder변경 가능한 클래스를 사용할 수도 있습니다 .

StringBuilder sb = new StringBuilder(inputString);

이 메소드 deleteCharAt()에는 다른 많은 mutator 메소드와 함께 메소드가 있습니다.

삭제해야 할 문자를 삭제 한 후 다음과 같이 결과를 얻으십시오.

String resultString = sb.toString();

이렇게하면 불필요한 문자열 객체가 생성되지 않습니다.


답변

하나의 가능성 :

String result = str.substring(0, index) + str.substring(index+1);

Java의 문자열은 변경할 수 없으므로 결과는 새로운 문자열 (두 개의 중간 문자열 오브젝트)입니다.


답변

replace라는 Java String 메소드를 사용할 수 있습니다. 그러면 첫 번째 매개 변수와 일치하는 모든 문자가 두 번째 매개 변수로 대체됩니다.

String a = "Cool";
a = a.replace("o","");


답변

Java의 문자열은 변경할 수 없으므로 아니요. 원하지 않는 문자를 제거하여 새 문자열을 만들어야합니다.

string의 c색인 위치 idx에서 단일 문자를 바꾸려면 str다음과 같이하고 새 문자열이 작성됩니다.

String newstr = str.substring(0, idx) + str.substring(idx + 1);


답변

String str = "M1y java8 Progr5am";

deleteCharAt ()

StringBuilder build = new StringBuilder(str);
System.out.println("Pre Builder : " + build);
    build.deleteCharAt(1);  // Shift the positions front.
    build.deleteCharAt(8-1);
    build.deleteCharAt(15-2);
System.out.println("Post Builder : " + build);

바꾸다()

StringBuffer buffer = new StringBuffer(str);
    buffer.replace(1, 2, ""); // Shift the positions front.
    buffer.replace(7, 8, "");
    buffer.replace(13, 14, "");
System.out.println("Buffer : "+buffer);

숯[]

char[] c = str.toCharArray();
String new_Str = "";
    for (int i = 0; i < c.length; i++) {
        if (!(i == 1 || i == 8 || i == 15))
            new_Str += c[i];
    }
System.out.println("Char Array : "+new_Str);


답변

다음 코드를 고려하십시오.

public String removeChar(String str, Integer n) {
    String front = str.substring(0, n);
    String back = str.substring(n+1, str.length());
    return front + back;
}


답변

(거대한) 정규식 기계를 사용할 수도 있습니다.

inputString = inputString.replaceFirst("(?s)(.{2}).(.*)", "$1$2");
  • "(?s)" - 정규 문자처럼 줄 바꿈을 처리하도록 regexp에 지시합니다 (경우에 따라).
  • "(.{2})" - 정확히 2 자 수집하는 $ 1 그룹
  • "." - 인덱스 2의 모든 문자 (압착)
  • "(.*)" - 나머지 inputString을 수집하는 $ 2 그룹.
  • "$1$2" - 그룹 $ 1과 그룹 $ 2를 하나로 묶습니다.