我有一个字符串“速度,7,红色,快速”。我想用字符串“Seven”替换7。我怎么做 ?如何用一个字符串替换索引处的单个字符?
更多细节 -
7可以通过任何字符串代替,而不只是 “七”。它也可以是“SevenIsHeaven”。 我不想替换所有出现的7.在指定索引处只有7个,即使用7的索引以某个字符串替换7。
我有一个字符串“速度,7,红色,快速”。我想用字符串“Seven”替换7。我怎么做 ?如何用一个字符串替换索引处的单个字符?
更多细节 -
7可以通过任何字符串代替,而不只是 “七”。它也可以是“SevenIsHeaven”。 我不想替换所有出现的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());
}
我的第一个猜测也是,尽管我认为OP希望能够替换所有'数字'? – Aquillo 2013-04-29 08:59:42
@Aquillo - no。请参阅更新 – 2013-04-29 09:00:07
OP说他只想替换指定的7个,不是全部。 – vikingsteve 2013-04-29 09:00:57
下面的情况如何?
String str = "speed,7,red,fast";
str = str.replace("7", "Seven");
7可以通过任何字符串,而不仅仅是 “七” 所取代。它也可能是 “SevenIsHeaven”。我不想替换所有出现的7.只有7 在指定的索引。
或者,如果你想使用正则表达式来替换第一个数字有意义的字符串。
String str = "speed,7,red,fast";
str = str.replaceFirst("\\d", "Seven");
,取代所有的出现。也许replaceFirst()而不是replace()? – vikingsteve 2013-04-29 09:03:32
@vikingsteve检查我的编辑。 :) – PermGenError 2013-04-29 09:04:08
因为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()
也可以做到这一点。
这只会替换一个角色的角色。如果他想用一个更长的字符串替换一个字符怎么办? – vikingsteve 2013-04-29 09:04:01
@vikingsteve编辑 – 2013-04-29 09:08:59
更好的方法是将字符串本身存储在一个数组中,并将其放在一个空间中。
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";
}
}
我觉得你在这里有两个问题。 a)将“数字”值转换为“alpha”的最佳方式是什么? b)如何替换这些值? – Aquillo 2013-04-29 08:57:59
http://docs.oracle.com/javase/tutorial/java/data/manipstrings.html – TheDarkKnight 2013-04-29 08:58:05
您是否在谷歌寻找“替换字符串Java”?你会惊讶的结果.. – Maroun 2013-04-29 08:59:18