java - 删除子字符串的自定义 Java 方法 - 删除引号时的奇怪行为

标签 java string methods

我正在尝试创建一个通用的删除字符串方法,该方法接受两个字符串输入-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/

相关文章:

java - 按索引获取字符串字符

java - java中的字符串数据类型

string - AppleScript:字符串中子字符串的索引

java - 错误找不到符号 - Java 类和方法

java - toString 方法显示错误

java - 方法调用 - 空参数字段

java - Java下载远程文件的方法

java - java8 中的文本无法解析为 Duration

java - 通过数组中的字符串名称访问资源字符串

java - 本地保存列表时 GluonClient 数据丢失