簡體   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