주어진 문자열에서 부분 문자열을 어떻게 제거합니까?


190

주어진 StringJava 에서 부분 문자열을 제거하는 쉬운 방법이 있습니까?

예 : "Hello World!", 제거 "o""Hell Wrld!"

답변:



9

StringBuffer를 사용할 수 있습니다

StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);

8

Apache StringUtils를 확인하십시오 .

  • static String replace(String text, String searchString, String replacement) 다른 문자열 내에서 발생하는 모든 문자열을 바꿉니다.
  • static String replace(String text, String searchString, String replacement, int max) 검색 문자열의 첫 번째 최대 값에 대해 문자열을 더 큰 문자열 내부의 다른 문자열로 바꿉니다.
  • static String replaceChars(String str, char searchChar, char replaceChar) 문자열에서 발생하는 모든 문자를 다른 문자로 바꿉니다.
  • static String replaceChars(String str, String searchChars, String replaceChars) 한 번에 문자열의 여러 문자를 바꿉니다.
  • static String replaceEach(String text, String[] searchList, String[] replacementList) 다른 문자열 내에서 나타나는 모든 문자열을 바꿉니다.
  • static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList) 다른 문자열 내에서 나타나는 모든 문자열을 바꿉니다.
  • static String replaceOnce(String text, String searchString, String replacement) 한 번 큰 문자열 내부에서 문자열을 다른 문자열로 바꿉니다.
  • static String replacePattern(String source, String regex, String replacement) Pattern.DOTALL 옵션을 사용하여 지정된 정규식과 일치하는 소스 문자열의 각 하위 문자열을 지정된 대체로 바꿉니다.

1
replacePattern을 벤치마킹했으며 사용자 정의 Java 코드를 실행하는 것보다 6 배 느립니다.
Alex Arvanitidis 2016 년

6
replace('regex', 'replacement');
replaceAll('regex', 'replacement');

귀하의 예에서

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

4

이것은 나에게 효과적입니다.

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

또는 당신은 사용할 수 있습니다

String no_o = hi.replace("o", "");



1
replaceAll(String regex, String replacement)

위의 방법은 답을 얻는 데 도움이됩니다.

String check = "Hello World";
check = check.replaceAll("o","");

1

기존 문자열로 바꾸는 데 하위 문자열을 사용할 수도 있습니다.

var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);

0

주어진 문자열에서 모든 부분 문자열을 삭제하는 구현입니다.

public static String deleteAll(String str, String pattern)
{
    for(int index = isSubstring(str, pattern); index != -1; index = isSubstring(str, pattern))
        str = deleteSubstring(str, pattern, index);

    return str;
}

public static String deleteSubstring(String str, String pattern, int index)
{
    int start_index = index;
    int end_index = start_index + pattern.length() - 1;
    int dest_index = 0;
    char[] result = new char[str.length()];


    for(int i = 0; i< str.length() - 1; i++)
        if(i < start_index || i > end_index)
            result[dest_index++] = str.charAt(i);

    return new String(result, 0, dest_index + 1);
}

isSubstring () 메소드의 구현은 다음과 같습니다. 같습니다


0
private static void replaceChar() {
    String str = "hello world";
    final String[] res = Arrays.stream(str.split(""))
            .filter(s -> !s.equalsIgnoreCase("o"))
            .toArray(String[]::new);
    System.out.println(String.join("", res));
}

char을 필터링하는 복잡한 논리가있는 경우 대신에 다른 방법을 사용하십시오 replace().


0

시작 및 끝 색인을 알고 있다면 이것을 사용할 수 있습니다.

string = string.substring(0, start_index) + string.substring(end_index, string.length());
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.