如何用字符串替换索引处的单个char?

时间:2013-04-29 08:55:55

标签: java string

我有一个字符串“速度,7,红色,快速”。我想用字符串“Seven”替换7。我该怎么做?

更多详情 -

7可以替换为任何字符串而不仅仅是“Seven”。它也可能是“SevenIsHeaven”。 我不想替换所有出现的7.在指定的索引处只有7,即使用索引7将7替换为某个字符串。

4 个答案:

答案 0 :(得分:7)

 replaceAll("7", "Seven") //simple as that

修改

然后你应该寻找指定的索引

 String input = "test 7 speed,7,red,fast yup 7 tr";
    int indexInteresdIn = 13;
    if(input.charAt(indexInteresdIn) == '7'){
        StringBuilder builder = new StringBuilder(input);
        builder.replace(indexInteresdIn, indexInteresdIn+1, "Seven");
        System.out.println(builder.toString());
    }

答案 1 :(得分:4)

由于String是不可变的,因此您应该使用StringBuilder来获得更好的效果。

http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

yourStringBuiler.replace(
                   yourStringBuiler.indexOf(oldString),
                   yourStringBuiler.indexOf(oldString) + oldString.length(),
                   newString);`

如果你想像String一样替换整个String.replaceAll(),你可以像这样创建一个自己的函数:

public static void replaceAll(StringBuilder builder, String from, String to)
{
    int index = builder.indexOf(from);
    while (index != -1)
    {
        builder.replace(index, index + from.length(), to);
        index += to.length(); // Move to the end of the replacement
        index = builder.indexOf(from, index);
    }
}

来源: Replace all occurrences of a String using StringBuilder?

但是,如果您不经常需要它并且性能不是那么重要,那么简单的String.replaceAll()也可以解决问题。

答案 2 :(得分:2)

如下所示:

 String str =  "speed,7,red,fast";
str = str.replace("7", "Seven");
  

7可以替换为任何字符串而不仅仅是“Seven”。它也可能是   “SevenIsHeaven”。我不想替换所有出现的7.只有7   在指定的索引处。

或者,如果您想使用正则表达式将第一个数字替换为有意义的字符串。

 String str =  "speed,7,red,fast";
str = str.replaceFirst("\\d", "Seven");

答案 3 :(得分:0)

更好的方法是将字符串本身存储在一个数组中,并将其拼接在一个空格中。

String s[];
static int index; 
s = in.readLine().spilt(" ");

现在在指定的索引处扫描指定单词的数组,并将其替换为您想要的字符串。

for(int i =0;i<s.length; i++)
{
 if((s[i] == "7")&&(i==index))
{
  s[i]= "Seven";
}
}