Java - 我怎样才能修改我的 replacePlaceholder 方法,以便它不再有我的 mad libs 程序的索引越界错误?

Java - How can I revise my replacePlaceholder method so that it no longer has an index out of bounds error for my mad libs program?

问题已解决,以下代码未更新 在一位乐于助人的用户的帮助下,我已经解决了这段代码的问题。以下代码未更新。

    // replacePlaceholder method
    private String replacePlaceholder(String template, String placeholder, String replacement)
    {
        String newTemplate = "";
        int count = 0;
        for(int i = 0; i < template.length(); i++)
        {
             if(count == 0 && template.substring(i, i + placeholder.length()).equals(placeholder))
            {
                newTemplate += replacement;
                count++;
            }
            else if(count != 1)
            {
                newTemplate += template.substring(i, i + 1);
            }
        }
        return newTemplate;
    }

正如评论所指出的,您应该只使用 String.replace(String, String)String.replaceAll(String, String) 而不是自己编写。您当前的实施存在许多问题:

  • template.substring(i, placeholder.length() + 1) 应该是 template.substring(i, i + placeholder.length())。否则,您的 beginIndex 可以大于 endIndex
  • 如果模板以半个占位符结尾,substring 将失败,因为 endIndex 太大。
  • aaa[placeholder]aaa 将变成 aaareplacementplaceholder]aaa 你当前的代码,因为你没有跳过其余的占位符。
  • 第二个占位符不会像你说的那样被替换 count++ 但永远不会重置它,使你的 if 总是转到 else.
  • 可能更多