2013-04-29 66 views
0

我有一个字符串“速度,7,红色,快速”。我想用字符串“Seven”替换7。我怎么做 ?如何用一个字符串替换索引处的单个字符?

更多细节 -

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

+0

我觉得你在这里有两个问题。 a)将“数字”值转换为“alpha”的最佳方式是什么? b)如何替换这些值? – Aquillo 2013-04-29 08:57:59

+0

http://docs.oracle.com/javase/tutorial/java/data/manipstrings.html – TheDarkKnight 2013-04-29 08:58:05

+2

您是否在谷歌寻找“替换字符串Java”?你会惊讶的结果.. – Maroun 2013-04-29 08:59:18

回答

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()); 
    } 
+0

我的第一个猜测也是,尽管我认为OP希望能够替换所有'数字'? – Aquillo 2013-04-29 08:59:42

+0

@Aquillo - no。请参阅更新 – 2013-04-29 09:00:07

+2

OP说他只想替换指定的7个,不是全部。 – vikingsteve 2013-04-29 09:00:57

2

下面的情况如何?

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"); 
+0

,取代所有的出现。也许replaceFirst()而不是replace()? – vikingsteve 2013-04-29 09:03:32

+0

@vikingsteve检查我的编辑。 :) – PermGenError 2013-04-29 09:04:08

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);` 

如果要更换整个StringString.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()也可以做到这一点。

+0

这只会替换一个角色的角色。如果他想用一个更长的字符串替换一个字符怎么办? – vikingsteve 2013-04-29 09:04:01

+0

@vikingsteve编辑 – 2013-04-29 09:08:59

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"; 
} 
} 
相关问题