0

我有以下结构的字符串:

positions = '15,-2,-3,15'

在这种情况下,它描述了点A(15, -2), B(-3, 15)

Q如何从这样的字符串中提取数据?

最好将结果作为某种结构的数组(例如,point[i].x, point[i].y),但多维数组也是合适的(例如point[i][0], point[i][1])。

4

4 回答 4

1

如果使用 split,它会将值转换为字符串,因此您需要使用 parseInt() 或 parseFloat() 将它们转换回数字。

如果您只想快速获取数字而不将它们转换为对象,则可以使用JSON.parse的强大功能

var positions = '15,-2,-3,15';
var arrPositions = JSON.parse("[" + positions + "]");
A([arrPositions[0], arrPositions[1]); 
B(arrPositions[2], arrPositions[3]);
于 2013-08-15T13:22:01.153 回答
0

我可能会这样做:

positions = '15,-2,-3,15';

Arr = [];
pos = positions.split(',');
i = 0;
while( pos.length ){
    Arr[i++] = pos.splice( 0, 2 );
}
于 2013-08-15T14:02:22.777 回答
0

只是为了踢球:

(function f (e, s, p, r) {
     r = e.exec(s);
     return r ? [p(r[1], r[2])].concat(f(e, s, p)) : [];
 }(/(-?\d+),(-?\d+)/g, '15,-2,-3,15',
   function (x, y) { return { x: x, y: y }; }));
于 2013-08-15T14:22:33.103 回答
0

像这样的东西会起作用,您使用逗号作为分隔符将字符串拆分为标记,然后循环通过该数组创建一些带有 x 和 y 的 Point 对象。

var data = positions.split(','); 
var points = [];
for(var i = 0; i < data.length - 1; i++) {
    var x = data[i];
    var y = data[++i];
    points.push(new Point(x,y));
}
于 2013-08-15T13:19:46.663 回答