从字符串中提取值

3

假设我有一个字符串"255, 100, 0"。如何将逗号前的每个值隔离出来并插入到变量中?

我的意思是:

x = 255; y = 100; z = 0;


2
一个捕获正则表达式就可以解决问题。在我能想出来之前,可能会有人在这里发表一个。 ;) - asymptoticFault
1
@asymptoticFault:有趣,.split() 似乎比 /^(\d+),\s*(\d+),\s*(\d+)$/ 更容易,但是我会使用正则表达式,以防止意外拆分无效的字符串。 - Zeta
你需要字符串值还是数值类型的? - Blazemonger
8个回答

2
var str = "255, 100, 0";
var d = str.split(",");

var x = parseInt(d[0],10); // always use a radix
var y = parseInt(d[1],10);
var z = parseInt(d[2],10);

console.log(x); //255
console.log(y); //100
console.log(z); //0

2
使用备受忽视的 String.match() 方法将按找到顺序返回所有匹配项的数组:
var str = "255, 100, 0",
    regex = /(\d+)/g,    // g is for "global" -- returns multiple matches
    arr = str.match(regex);
console.log(arr);        // ["255","100","0"] -- an array of strings, not numbers

要将它们转换为数字,可以使用简单的循环:

for (var i=0,j=arr.length; i<j; i++) {
    arr[i] *= 1;
};                     // arr = [255, 100, 0] -- an array of numbers, not strings

1
var str = "255, 100, 0";
var str_new = str.split(",");

var x = str_new[0];
var y = str_new[1];
var z = str_new[2];

0
var string = "255, 100, 0";
var arrNums = string.split(",");

将每个数字放入arrNums数组的一个元素中。


0

0

尝试使用JavaScript的split()方法

var str = "255, 100, 0";
var elements = str.split(','); //take values to an array
//access the elements with array index
var x = elements[0];
var y = elements[1];
var z = elements[2];

这里是w3schools的文档


如果可以链接到真正的文档,请不要链接到w3schools,因为他们已经被证实存在错误。 - Blazemonger

0
假设您有以下字符串:
var string = "x = 255; y = 100; z = 0;";

你确实应该尝试使用 split 函数:

var values = [];
var expressions = string.split("; ");
for (var i = 0, c = expressions.length ; i < c ; i++) {
    values.push(expressions[i].split("= ").pop() * 1);
}

在编程中,你会得到像 x = 255 这样的值。然后,你只需要截取等号 = 前面的部分。我只需将其乘以1来将其转换为整数。

仔细重新阅读问题。你正在使用他的输出字符串作为你的输入字符串。 - Blazemonger

0
如果您的字符串确实是众所周知/格式正确的:
var str = "255, 100, 0";
var vals = str.split(', '); // <<= you can split on multiple chars

var x = +vals[0]; // <<= coerces to a number

// lather, rinse, repeat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接