我想用'F'替换每个'0'的字符串,用'E'替换每个'1',依此类推。
e.g。 “234567890ABCDEF”应导致“DCBA9876543210”
final char[] items = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
for (int i = 0; i < 16; i++) {
newString = oldString.replace(items[i], items[15-i]);
}
不幸的是,这段代码不起作用。它取代了所有字母而不是数字。有什么建议,为什么?我真的很茫然...
答案 0 :(得分:2)
您的问题是您将数字替换为i = 0到7的字母,然后返回i = 8到15。
答案 1 :(得分:0)
这是因为您在第二次替换中反转了前八次替换期间完成的结果!这意味着,
0-7被转换回0-7,但是8和9将被转换为他们的对手!
答案 2 :(得分:0)
如果您在代码中添加调试并查看迭代,您将会注意到如何使用上次迭代的replace()es覆盖第一次迭代的结果:
234567890ABCDEF
23456789FABCDEF
23456789FABCDEF
D3456789FABCDEF
DC456789FABCDEF
DCB56789FABCDEF
DCBA6789FABCDEF
DCBA9789FABCDEF
DCBA9889FABCDEF
DCBA9779FABCDEF
DCBA6776FABCDEF
DCB56776F5BCDEF
DC456776F54CDEF
D3456776F543DEF
23456776F5432EF
23456776F54321F
234567760543210