我有一个字符串“速度,7,红色,快速”。我想用字符串“七”替换 7。我怎么做 ?
更多细节 -
7 可以替换为任何字符串,而不仅仅是“七”。它也可能是“七是天堂”。我不想替换所有出现的 7。指定索引处只有 7,即使用 7 的索引将 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());
}
因为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);
}
}
资料来源: 使用 StringBuilder 替换所有出现的字符串?
但是,如果您不经常需要它并且性能不是那么重要,那么一个简单String.replaceAll()
的也可以解决问题。
像下面这样简单如何?
String str = "speed,7,red,fast";
str = str.replace("7", "Seven");
7 可以替换为任何字符串,而不仅仅是“七”。它也可能是“七是天堂”。我不想替换所有出现的 7。指定索引处只有 7。
或者,如果您想使用正则表达式将第一个数字替换为有意义的字符串。
String str = "speed,7,red,fast";
str = str.replaceFirst("\\d", "Seven");
更好的方法是将字符串本身存储在一个数组中,并将其吐出一个空格。
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";
}
}