如何从字符串中删除子字符串?

imzjd6km  于 2021-07-03  发布在  Java
关注(0)|答案(5)|浏览(412)

我想与你分享我的代码,以帮助我提高。
我需要写一个返回 String 包括 string1 减去所有的字符 string2 .
下面是我尝试过的,不幸的是它没有那么好地工作:

public static String remove(String str1, String str2) {
    String empty = "";

    for (int i = 0; i < str2.length(); i++) { // hello ll
        for (int j = 0; j < str1.length(); j++) {
            if (str2.charAt(i) != str1.charAt(j)) {
                empty = empty + str1.charAt(j);

            }
        }
    }
    return empty;
}
to94eoyn

to94eoyn1#

你可以这样做:

public static String remove(String str1, String str2) {
    for (int i = 0; i < str2.length(); i++)
        str1 = str1.replace(str2.charAt(i) + "", "");
    return str1;
}

从字符串1将字符串2中的所有字符替换为“”。

eqzww0vc

eqzww0vc2#

你可以用 indexOf 检查第二个字符中是否不存在字符 String . 当前,您没有检查第二个的所有字符 String 在确定是否应添加当前字符之前。此外,最好使用 StringBuilder 而不是在循环中串联。

public static String remove(String str1, String str2) {
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < str1.length(); i++) {
        if (str2.indexOf(str1.charAt(i)) == -1) {
            sb.append(str1.charAt(i));
        }
    }
    return sb.toString();
}
r1zk6ea1

r1zk6ea13#

String 包括 string1 减去所有的字符 string2 :

public static void main(String[] args) {
    System.out.println(remove("hello", "ll")); // heo
    System.out.println(remove("hello", "eo")); // hll
    System.out.println(remove("hello", "lo")); // he
}
public static String remove(String str1, String str2) {
    return str1.codePoints()
            .filter(ch -> !str2.contains(Character.toString(ch)))
            .mapToObj(Character::toString)
            .collect(Collectors.joining());
}
fcwjkofz

fcwjkofz4#

在您的解决方案中,对于第一个字符串中的每个字符,迭代第二个字符串中的字符,如果两个字符串不同,则将该字符附加到结果中。这不是预期的行为-仅当字符与第二个字符串中的所有字符不同时,才需要追加该字符。
尽可能保留共享方法的格式,您可能希望执行以下操作:

public static String remove(String str1, String str2) {
    String empty = "";

    for (int i = 0; i < str2.length(); i++) {
        boolean found = false;
        for (int j = 0; j < str1.length() && !found; j++) {
            if (str2.charAt(i) == str1.charAt(j)) {
                found  = true;
            }
        }
        if (!found) {
            empty += str1.charAt(i)
    }
    return empty;
}
v64noz0r

v64noz0r5#

你只需要一句话就可以做到:

return str1.replace(str2, "");

演示:

public class Main {    
    public static void main(String[] args) {
        // Test
        System.out.println(remove("Hello", "ll"));
    }

    public static String remove(String str1, String str2) {
        return str1.replace(str2, "");
    }
}

输出:

Heo

相关问题