gpt4 book ai didi

java - 从字符串中删除选定字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:21 27 4
gpt4 key购买 nike

我是一名试图找出问题的学生。
我需要创建一个方法,从另一个字符串中删除在指定字符串中找到的任何字符。
所以如果 String str = "hello world"and String remove = "eo"该方法将返回 "hll wrld"

我的解决方案设置结果字符串的方式被打印了很多次,这是我不想要的。是否有解决此问题的简单方法,还是我必须重新设计方法?

class StringStuff{
public static void main (String [] args){

String str = "This is a string that needs to be changed";
String remove = "iaoe";

System.out.println(removeChars(str, remove));

}

public static String removeChars(String str, String remove){
String newStr = "";
for(int i=0;i<remove.length();i++){
for(int j=0; j<str.length(); j++){
if(str.charAt(j)!=remove.charAt(i)){
newStr = newStr+str.charAt(j);
}
}
}
return newStr;
}
}

更新

感谢您的回复,我在您提供的解决方案的启发下找到了另一种“新手”方法。

public static String removeChar(String str, String remove){
String newStr = "";
boolean match = false;
for(int i = 0; i<str.length(); i++){
for(int j=0; j<remove.length(); j++){
if(str.charAt(i) == remove.charAt(j))
match = true;
}
if(match == false)
newStr = newStr + str.charAt(i);
match = false;
}
return newStr;
}

最佳答案

此答案假设不允许使用 replaceXXX 方法。

首先,for 循环是错误的。第一个循环需要遍历原始 String

下一个问题是嵌套的 for 循环将一个字符附加到新的 String for each remove 字符串,前提是字符不匹配。这会生成 hllo worldhell wrld

因此解决方案不是迭代remove StringindexOf用于字符检查。

public static String removeChars(String str, String remove) {
String newStr = "";
for (int i = 0; i < str.length(); i++) {
if (remove.indexOf(str.charAt(i)) == -1) {
newStr = newStr + str.charAt(i);
}
}

return newStr;
}

通过使用 StringBuilder 而不是 newStrString 可以进一步改进。

关于java - 从字符串中删除选定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180371/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com