我正在尝试将 string.replace
函数与回调一起使用,这样我就可以根据数字替换交替索引处的字符。该字符串是一个“板”,只是一串必须用空格替换的主题标签。
例。大小为 8 (8x8) 的棋盘:
########
########
########
########
########
########
########
########
预期输出:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
例。大小为 7 (7x7) 的棋盘:
#######
#######
#######
#######
#######
#######
#######
预期输出:
# # #
# # # #
# # #
# # # #
# # #
# # # #
# # #
我当前的替换回调逻辑是这样的:
board.replace(/#/g, (matched, index, original) => {
if (index % 2 === 0) {
return " ";
} else {
return matched;
}
});
当前的逻辑涵盖了偶数大小的板(例如 8)的情况,但在奇数的情况下,我想替换我替换空白空间的索引。
目前,当通过奇数板时,它会返回:
# # #
# # #
# # #
# # #
# # #
# # #
# # #
是否有某种正则表达式可以让我检查交替行?或者在回调中这甚至可能吗?任何帮助将不胜感激。
最佳答案
您必须考虑行号。我会分成几行,然后测试 index + lineNum % 2 === 0
。
const board = `#######
#######
#######
#######
#######
#######
#######`;
const result = board.split('\n').map((line, lineNum) => {
return line.replace(/#/g,
(char, index) => (index + lineNum) % 2 === 0 ? ' ' : '#'
);
}).join('\n');
console.log(result);
关于JavaScript String.replace 回调以检查每隔一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57954084/