将另一个字符串中的字符串(无字符)从给定的起始索引替换为给定的结束索引

时间:2018-01-29 09:50:58

标签: java string

我正在尝试实现一个逻辑,我需要将字符串中的特定sub-string(no of characters)替换为从给定的起始索引到结束索引。

例如:

假设有一个名为"elephant"的字符串,我将起始索引作为2,结束索引作为5,我需要用另一个给定的字符串{{替换这些索引之间的字符1}}。因此,结果字符串应为"tiger"

同样,假设有一个名为"eltigernt"的字符串,我将起始索引设为"elephant elephant tiger",结束索引为2,我需要用另一个给定字符串替换这些索引之间的字符5。因此,结果字符串应为"tiger"

3 个答案:

答案 0 :(得分:0)

我认为使用默认的String方法是最好的方法:

String s = "elephant";
String substitue = "tiger";
System.out.println(s.substring(0, 2) + substitute + s.substring(6));

请注意,您必须将上限增加1.此外,所有索引都必须由变量替换。

答案 1 :(得分:0)

你可以使用StringBuilder,也可以只使用CharArray进行简单的for循环。

StringBuilder版本:

public static String replace(int start, int end, String ori, String rep){
    StringBuilder sb = new StringBuilder();
    sb.append(ori,0,start)
            .append(rep)
            .append(ori,end+1,ori.length());
    return sb.toString();
}

希望这会有所帮助:)

注意:虽然您可以使用简单的字符串" +",但我建议使用StringBuilder以获得更好的性能,在这种情况下。

答案 2 :(得分:0)

只需使用StringBuilder方法replace,您就可以定义要替换的边界和特定值:

String s = "FooBar";
StringBuilder sb = new StringBuilder(s);
sb.replace(1,3,"##");
System.out.println(sb.toString());
  

˚F##巴

文档:

  

public StringBuilder replace(int start,                       int end,                       String str)

     

使用指定String中的字符替换此序列的子字符串中的字符。子字符串从指定的开始处开始并延伸到索引结束处的字符 - 1或如果不存在此类字符则延伸到序列的结尾。首先删除子字符串中的字符,然后在start处插入指定的String。 (如果需要,将延长此序列以容纳指定的字符串。)

Parameters:
    start - The beginning index, inclusive.
    end - The ending index, exclusive.
    str - String that will replace previous contents.