我有一個字符串「速度,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