繁体   English   中英

Java - 搜索和替换字符串的一部分

[英]Java - Search and Replace part of a String

我想写一个简短的程序来代替字符串的计数。 所以我想用 0 insted 1 开始字符串。因为它是一个长字符串,所以我不想自己改变它。 所以字符串(在这个例子中)是: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. 悲伤的坐着。 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. 没有海 takimata sanctus est Lorem ipsum dolor sit amet。

我希望字符串从 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM