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
您需要将结果保存在数组中以用新值替换旧值,您正在通过对现有字符串调用替换来生成新字符串,并且没有将新字符串分配给对象引用。
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 用于正则表达式。
我需要编写使用 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
您需要将结果保存在数组中以用新值替换旧值,您正在通过对现有字符串调用替换来生成新字符串,并且没有将新字符串分配给对象引用。
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 用于正则表达式。