[英]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.