2013-04-29 60 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"; 
} 
} 
相關問題