特定の文字列から部分文字列を削除するにはどうすればよいですか?


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) ある文字列を、より大きな文字列内の別の文字列で1回置換します。
  • static String replacePattern(String source, String regex, String replacement) 指定された正規表現に一致するソース文字列の各部分文字列を、Pattern.DOTALLオプションを使用して指定された置換文字列に置き換えます。

1
replacePatternをベンチマークしたところ、カスタムJavaコードを実行するよりも6倍遅くなります。
Alex Arvanitidis 2017年

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", "");

3

StringBuilder/StringBuffer指定されたオフセットで文字を削除、挿入、置換できるかどうかを確認する必要があります。



1
replaceAll(String regex, String replacement)

上記の方法は答えを得るために役立ちます。

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


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.