我不想从X中删除Y并且编译,但是当我在我的main方法中运行它时,我得到一个错误说出界限。我不确定是什么问题。任何帮助将不胜感激。
public static String filter(String X, String Y) {
String i = X;
if ((X != null) && (X.length() >0) && (Y != null) &&Y.length() >0 && (i !=null)){
int z = X.indexOf(Y);
i = X.substring(0, z) +X.substring(z + Y.length());
}
return i;
}
答案 0 :(得分:1)
正如@singhakash已经指出的那样
int z = X.indexOf(Y); --> this is returning -1
所以
X.substring(0, z)
成为
X.substring(0, -1)
导致OutOfBounds异常
P.S。
为什么你这么复杂!相反,您可以使用String#replace
或String#replaceAll
String X="StackOverflow";
String Y="flow";
X=X.replaceAll(Y,"");
System.out.println(X);
输出
StackOver
Demo1 - 如果x中不存在y,则会使索引超出范围
Demo2 - 如果x中存在y,您将获得正确的输出
答案 1 :(得分:1)
使用replaceAll方法
public static String filter(String X, String Y) {
return X.replaceAll(Y,"");
}
答案 2 :(得分:1)
我想这对你有用:
if((x !=null && y !=null) && x.contains(y)) {
System.out.println(x.replaceAll(y, ""));
}
答案 3 :(得分:0)
由于此Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
X.substring(z + Y.length())
额外检查“X.length()> Y.length()”,它应该可以正常工作。
答案 4 :(得分:0)
如果您想删除X中所有出现的Y,请使用以下代码。
public static String filter(String X, String Y) {
if ((X != null) && (X.length() >0) && (Y != null) &&Y.length() >0) {
while(X.contains(Y)){
int z = X.indexOf(Y);
X = X.substring(0, z) +X.substring(z + Y.length());
}}
return X;
如果X不包含Y那么
int z = X.indexOf(Y);
- >这是返回-1
X.substring(0, z)
即X.substring(0, -1)
- >导致 OutOfBounds异常
最好使用X=X.replaceAll(Y,"");
答案 5 :(得分:-1)
您可以使用:
String subString = testString.subString(firstIndex, secondIndex);
你可以通过这个获得索引:
int index = testString.indexOf(String);