使用javascript在cdata字符串中查找特定字符串

时间:2014-01-27 19:48:50

标签: javascript regex jsctypes

我一直在using data types in javascript上阅读,特别是CData。我有一个具有数字字符串的特定用例我正在运行正则表达式模式。对于我正在做的事情来说,它已经相当高效,但我感兴趣的是它可能使它更适合更大的应用程序。

我将多维模型表示为单个整数字符串( 不是整数,但到目前为止这对我有用)。我用0代表空格,用1代表空格,每个连续的维度除以一个整数,用2开始,用于二维。

3 1D:

000

3x3 2D:

00020002000

3x3x3 3D:

00020002000300020002000300020002000

制作正则表达式模式涉及很多东西,但基本上它看起来像2D(这是一个超级简化的版本,以方便):

var gridWidth = //total width of our grid
var columns = //width of our object to place in grid
var rows = //height of our object to place in grid
var grid = 00020002000;

// (0{number of columns})+(([0-2]{difference in width of grid and object})(0{number of columns again)).repeat(number of rows) 
var reg = RegExp(("(0{" + columns + "})" + ("([0-2]{" + (gridWidth + 1 - columns) + "})(0{"+columns+"})").repeat(rows-1)) + "");

grid = grid.replace(reg, function(){
    //the last 2 argument's aren't part of our grouping
    var l = arguments.length - 2;
    r = "";
    for (var i = 1; i<l; ++i){
        if (i%2){
            r+= "1".repeat(columns); //repeat prototyped, just repeats string x times
        } else {
            r+= arguments[i];
        }
    }
    return r;
});

CData整数似乎比我正在阅读的javascript字符串更具性能,尽管我没有C语言经验或更高级别编程的精细点。我是一个javascript代码猴子 - 随意告诉我,我的思路已经基于我的基础。

所以我的问题是,是否有可能采用我的网格(基本上是一个整数),将其转换为/存储为CData,并以某种方式运行我的正则表达式模式以努力提高性能处理大量的在一个非常大的网格空间中的对象?

(旁注:我已经能够使用div在平面中将1个1x1和4x4之间的10000个随机大小的对象放置在平均大约14000ms的chrome中,因此它适用于基本网格布局[寄存器]因为0ms有时在一个小网格上只有几十个对象。]更有效地处理对象的处理可能会激发更多的用途)

1 个答案:

答案 0 :(得分:0)

“更高效”与你想要完成的事情相关。

您正在阅读的CData规范是草案。在此期间,保持简单 - 尝试数组。正则表达式似乎是一个新颖的想法,但在我看来,它很难维护。