字符串索引超出范围并全部替换

cla*_*l3r 3 java replace

如何将<>包围的mapDir替换为某个字符串?

  String mapDir = "D:\\mapping\\specialists\\ts_gpc\\";
  String test = "foo: <mapDir> -bar";
  println(test.replaceAll("<mapDir>", mapDir));
Run Code Online (Sandbox Code Playgroud)

上面给了我一个StringIndexOutOfBoundsException。

下面的代码适合我,但是我认为纯java也必须工作。

static String replaceWord(String original, String find, String replacement) {
    int i = original.indexOf(find);
    if (i < 0) {
        return original;  // return original if 'find' is not in it.
    }

    String partBefore = original.substring(0, i);
    String partAfter  = original.substring(i + find.length());

    return partBefore + replacement + partAfter;
}
Run Code Online (Sandbox Code Playgroud)

SMA*_*SMA 5

由于不需要使用正则表达式,因此不需要replaceAll方法。相反,您可以使用replace如下所示的api:

String mapDir = "D:\\mapping\\specialists\\ts_gpc\\";
String test = "foo: <mapDir> -bar";
System.out.println(test.replace("<mapDir>", mapDir));
Run Code Online (Sandbox Code Playgroud)