我正在做一些初学者的编码练习,但遇到了这个问题:给两个字符串base和remove,返回一个基本字符串的版本,其中删除字符串的所有实例都已被删除。(不区分大小写)。
到目前为止,这是我所拥有的,但是根本没有用。
public String withoutString(String base, String remove) {
for (int i=0; i<base.length()-remove.length(); i++){
if (base.substring(i, i+remove.length()).equals(remove)){
base = base.substring(i, base.indexOf("remove")-1) + base.substring(base.indexOf("remove"), base.length()-remove.length());
}
}
return base;
}
我尚未处理区分大小写的部分,以使其对我自己更可见。我也不确定为什么不能使用base.replaceAll(“ remove”,“”); 任何帮助表示赞赏。
编辑*:我犯了一个菜鸟错误,replaceAll仍然有效。另外,我该如何使用循环和条件来做到这一点?会像我以前一样凌乱吗?
您可以使用
String result = base.replaceAll(remove,"");
用引号作为您实际尝试删除字符串的位置"remove"
。
要处理敏感的情况,您可以(?i)
在前面使用regex标志来忽略大小写,这样您就可以调用
String result = base.replaceAll("(?i)" + remove,"");
这确实意味着String remove现在是一个正则表达式,因此特殊字符可能会产生不希望的结果。例如,如果您的删除字符串为.
,则最终将删除每个字符。如果您不希望将其用作正则表达式,请使用
String result = Pattern.compile(remove, Pattern.LITERAL).matcher(base).replaceAll("")
这也可以包括不区分大小写的标志,像这样因为他们是一个位掩码,请参阅模式更多
Pattern.LITERAL | Pattern.CASE_INSENSITIVE
编辑
要使用循环执行此操作,只需执行此循环
for (int i=0; i <= base.length()-remove.length(); i++)
{
if (base.substring(i, i+remove.length()).equals(remove))
{
base = base.substring(0, i) + base.substring(i + remove.length() , base.length());
i--;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句