因此,明确说明任务:您希望将两个或多个数字的序列转换为这些数字的总和。总和保证为 8 或更少,即也是一位数。
有很多方法可以做到这一点,但最接近您尝试的方法可能是:
static String normalizeFen(String fen) {
StringBuilder buf = new StringBuilder(fen);
for (int i = 1; i < buf.length(); i++) {
if (Character.isDigit(buf.charAt(i)) && Character.isDigit(buf.charAt(i - 1))) {
// Found 2 consecutive digits, so sum them
int sum = Character.digit(buf.charAt(i - 1), 10)
+ Character.digit(buf.charAt(i), 10);
buf.setCharAt(i - 1, Character.forDigit(sum, 10));
buf.deleteCharAt(i); // Remove second digit
i--; // Go back to reprocess the same index position again
}
}
return buf.toString();
}
测试
System.out.println(normalizeFen("1P111Pr1"));
System.out.println(normalizeFen("rnbqkbnr/pp1ppppp/11111111/11p11111/1111P111/11111111/PPPP1PPP/RNBQKBNR"));
输出
1P3Pr1
rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR