在javascript中替换一些匹配的字符串

时间:2014-01-21 13:52:15

标签: javascript regex

我正在研究网格布局功能。我差不多有一半在那里撞墙了。

我正在使用一个字符串并在每个框中运行一个RegExp函数,我将它放在网格中以确定它适合的位置(基于它占用的行数/列数)。这成功了。示范:

function findSpace(columns, rows){
    var totalColumns = 4;
    var grid = "11002100020000200002";
    //1 represents occupied space, 0 empty space, and 2 a new line
    var reg = RegExp("(0{" + columns + "})(([0-2]{" + (totalColumns - columns + 1) + "})0{"+columns+"}){" + (rows-1) + "}");
    var i = grid.search(reg);
    return i.index;
}

返回匹配的索引,让我知道我的网格中这个框会落在哪里。见fiddle.

我试图用“1”代替“0”。当然,执行grid.replace(reg, "1")会将匹配开始时的所有内容替换为单个“1”。我只需要替换为行和列占用的“0”,每个都有一个“1”,而不是任何匹配的字符。

这是一种不同的做法。是的,我可以使用数组数据结构。这有什么乐趣?我不是在寻找“不要这样做,就像其他人一样做”的答案,我正在努力确定解决我的方案的最有效方法。

谢谢!

1 个答案:

答案 0 :(得分:1)

String#replace方法可能是故障单。如果将正则表达式和函数作为第二个参数传递,则可以动态操作每个匹配。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace