我有一个字符串“速度,7,红色,快速”。我想用字符串“Seven”替换7。我该怎么做?
更多详情 -
7可以替换为任何字符串而不仅仅是“Seven”。它也可能是“SevenIsHeaven”。 我不想替换所有出现的7.在指定的索引处只有7,即使用索引7将7替换为某个字符串。
答案 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";
}
}