簡體   English   中英

ReplaceAll在String []元素上不起作用

[英]ReplaceAll not working on String[] element

我需要編寫使用FEN作為創建國際象棋棋盤的參數的國際象棋程序。 為了簡單地完成這個過程,我想用replaceAll方法用等於“ 1”的數字替換與該數字相等的數字(看我的代碼)。 不幸的是,這行不通,我也不知道為什么。 有人可以告訴我該怎么做嗎?

String[] read2 = new String[] {"rnbqkbnr", "pppppppp", "8", "8", "8", "8", "PPPPPPPP", "RNBQKBNR"};         
for (int i = 0; i < 8; i++ ) {
    System.out.println(read2[i]);
    read2[i].replaceAll("8", "11111111");
    read2[i].replaceAll("7", "1111111");
    read2[i].replaceAll("6", "111111");
    read2[i].replaceAll("5", "11111");
    read2[i].replaceAll("4", "1111");
    read2[i].replaceAll("3", "111");
    read2[i].replaceAll("2", "11");
    System.out.println(read2[i]);   
}

輸出是

rnbqkbnr
rnbqkbnr
pppppppp
pppppppp
8
8
8
8
8
8
8
8
PPPPPPPP
PPPPPPPP
RNBQKBNR
RNBQKBNR

但應該是

rnbqkbnr
rnbqkbnr
pppppppp
pppppppp
8
11111111
8
11111111
8
11111111
8
11111111
PPPPPPPP
PPPPPPPP
RNBQKBNR
RNBQKBNR

您需要將結果保存在數組中,以用新值替換舊值,通過在現有字符串上調用replace來生成新字符串,並且沒有將新字符串分配給對象引用。

 String[] read2 = new String[] {"rnbqkbnr", "pppppppp", "8", "8", "8", "8", "PPPPPPPP", "RNBQKBNR"};

for (int i = 0; i < 8; i++ ) {

    System.out.println(read2[i]);
    read2[i] = read2[i].replace("8", "11111111");
    read2[i] = read2[i].replace("7", "1111111");
    read2[i] = read2[i].replace("6", "111111");
    read2[i] = read2[i].replace("5", "11111");
    read2[i] = read2[i].replace("4", "1111");
    read2[i] = read2[i].replace("3", "111");
    read2[i] = read2[i].replace("2", "11");
    System.out.println(read2[i]);

}

編輯:如注釋中所建議,使用replace代替replaceAll,因為replaceAll用於正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM