用Java替换字符串

时间:2012-04-06 23:40:02

标签: java

我想编写一个简短的程序,它取代了字符串的计数。所以我想用0的insted开始字符串。因为它是一个很长的字符串我不想用我自己的改变它。所以String(在这个例子中)是:String LINE:

  1. Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore
  2. magna aliquyam erat,sed diam voluptua。
  3. 在vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,no sea takimata sanctus est Lorem ipsum
  4. dolor坐下来。 Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore
  5. magna aliquyam erat,sed diam voluptua。在vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,
  6. no sea takimata sanctus est Lorem ipsum dolor sit amet。
  7. 我希望字符串以0开始计数,然后继续1.2.3 ......(0,1,2,3,4 ......)

    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 ...但我希望计数到0,1,2,3,4

3 个答案:

答案 0 :(得分:8)

即使递增计数器,每次循环迭代时,都会将计数器重新设置为1和0。您应该移动此代码:

int NormCounter = 1;
int ReplaceCounter = 0;

在for-loop之外:

public static void main(String[] args) {

    int NormCounter = 1;
    int ReplaceCounter = 0;

    for (int counter = 1; counter <= 300; counter++) {
        String NormCounterS  = NormCounter + ".";
        String ReplaceCounterS = ReplaceCounter + ".";

        Line = Line.replace(NormCounterS, ReplaceCounterS);

        ++ReplaceCounter;
        ++NormCounter;
    }

    System.out.println(Line);
}

另请注意String NormCounterS = (new Integer(NormCounter)).toString() + ".";如何更简单地重写String NormCounterS = NormCounter + ".";。 (最终结果是一样的。)

有关此方法的其他错误修复,请参阅Laky's comment

也只是Java编码约定的一个小插件:标准的Java变量用小写的起始字母命名。例如。使用normCounter代替NormCounter

答案 1 :(得分:2)

正如其他人所建议的那样,将变量赋值放在for循环之外。但是,您的代码仍然无效,您将匹配“31”。在第一次迭代中将其更改为“30”。然后在后面的迭代中,你将匹配“30”。并将其更改为“29.”,因此您实际上将更改为“31”。到“29.”,而不是“30”。如你所愿。请尝试以下方法:(我假设数字前面有空格)

for (int counter = 0; counter < 300; counter++) {
    line = line.replace(" " + (counter + 1) + ".", " " + counter + ".");
}

编辑:可能更好的解决方案是使用replaceFirst,这次不需要任何假设:

for (int counter = 0; counter < 300; counter++) {
    line = line.replaceFirst((counter + 1) + ".", counter + ".");
}

现在应该可以做到这一点。

注意:通常使用小写字母开始变量名称,并使用以大写字母开头的名称。

答案 2 :(得分:0)

放置int NormCounter = 1;         int ReplaceCounter = 0;在for循环之外