我正在尝试创建一个通用的删除字符串方法,该方法接受两个字符串输入-parentString和cleanable,并且在完全删除parentString中所有出现的cleanable之后返回parentString,它工作得很好,除非我告诉它删除引号。
。这是我所做的:
public String remove(String parentString, String cleanable) {
int i = parentString.indexOf(cleanable);
Log.d(LOG_TAG, "print index " + i);
String child1, child2;
while (parentString.indexOf(cleanable) != -1) {
if (parentString.indexOf(cleanable) == 0) {
child1 = "";
} else {
child1 = parentString.substring(0, (i - 1));
}
Log.d(LOG_TAG, "print child1 " + child1);
child2 = parentString.substring(i + cleanable.length(), parentString.length() - 1);
Log.d(LOG_TAG, "print child2 " + child2);
parentString = child1 + child2;
Log.d(LOG_TAG, "print parent " + parentString);
}
return parentString;
}
它工作正常,除非输入采用 ["J.K. Rowling"] 形式,并且我将该方法应用为author = remove(author, "\""); 它给出以下值:
child1 = "" ;
child2= K. Rowling;
我还注意到,当 x 等于 y 时,substring(x,y) 方法返回“”。 ?我创建的这个方法的行为方式是我不理解的,即使我使用简单的逻辑也是如此。我知道已经有可用的方法可以完成我想要做的事情,但我希望这个方法能够工作。
最佳答案
如果您想完成完整的过程 - 最好实现子字符串搜索和方法substring
。
当 x 等于 y 时,该方法返回一个空字符串,因为 x 是起始位置,y 是结束位置(不包括),所以你问:“给我一个从 5 到 5 的字符串”,当然它会返回一个空字符串。
关于java - 删除子字符串的自定义 Java 方法 - 删除引号时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41956631/