[英]Java - Search and Replace part of a String
我想寫一個簡短的程序來代替字符串的計數。 所以我想用 0 insted 1 開始字符串。因為它是一個長字符串,所以我不想自己改變它。 所以字符串(在這個例子中)是:String LINE:
我希望字符串從 0 開始計數。
public static void main(String[] args) {
int Counter = 1;
while (Counter <=300){
int counter2 =1;
String Counterstring ;
Counterstring = (new Integer(counter2)).toString() + ".";
int ReplaceCounting = 0;
String Replace = (new Integer(ReplaceCounting)).toString() + ".";
Line.replace(Counterstring , Replace);
Counter++;
}
System.out.println(Line);
}
}
有人可以告訴我我做錯了什么嗎? output 是一樣的。
編輯:
我將其更改為: 我將其更改為:
public static void main(String[] args) {
for (int counter = 1; counter <= 300; counter++) {
int NormCounter =1;
int ReplaceCounter = 0;
String NormCounterS = (new Integer(NormCounter)).toString() + ".";
String ReplaceCounterS = (new Integer(ReplaceCounter)).toString() + ".";
Line = Line.replace(NormCounterS , ReplaceCounterS);
++ReplaceCounter;
++NormCounter;
}
System.out.println(Line);
}
}
但它仍然改變了第一個“1”。 變成“0”...所以它是 0,2,3,4...但我希望計數到 go 0,1,2,3,4
您假設字符串是可變的。 他們不是。 調用replace
然后忽略返回值將無濟於事。 你要:
Line = Line.replace(Counterstring, Replace);
盡管出於偏好,您應該對變量名使用camelCase
式命名,並避免無緣無故地做很多工作。 例如,您的循環會更好:
for (int counter = 1; counter <= 300; counter++) {
line = line.replace("1.", "0.");
}
當然,不清楚為什么要多次執行此操作……恐怕您的描述對我來說很晦澀。
編輯:使用您編輯的代碼,看起來您真的想要:
for (int counter = 1; counter <= 300; counter++) {
line = line.replace(counter + ".", (counter - 1) + ".");
}
首先,就像 Jon 所說的那樣,如果您的變量沒有正確的camelCase
命名法,您的代碼對於普通 Java 用戶來說幾乎不可讀。 您發布的任何新代碼都應該真正使用既定的約定。
現在,對於您的代碼,您每次迭代循環時都會重置計數器。 所以每次你到達line.replace(normCounter, replaceCounter)
它都在做line.replace("1.", "0.")
這是你應該做的:
int replaceCounter = 0;
for (int counter = 1; counter <= 300; counter++) {
line = line.replace(String.valueOf(counter) + ".", String.valueOf(replaceCounter) + ".");
replaceCounter++;
}
System.out.println(line);
請注意我是如何在 for 循環之外初始化我的計數器的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.