我有一个字符串,其中每个值都在[]
之间,并且最后有一个.
。如何从字符串中分隔所有值?
这是示例字符串:
[value01][value02 ][value03 ]. [value04 ]
//want something like this
v1 = value01;
v2 = value02;
v3 = value03;
v4 = value04
值的数量不是恒定的。如何从该字符串中单独获取所有值?
答案 0 :(得分:2)
使用正则表达式指定多个分隔符。请查看以下帖子:
How do I split a string with multiple separators in javascript?
Split a string based on multiple delimiters
var str = "[value01][value02 ][value03 ]. [value04 ]"
var arr = str.split(/[\[\]\.\s]+/);
arr.shift(); arr.pop(); //discard the first and last "" elements
console.log( arr ); //output: ["value01", "value02", "value03", "value04"]
如何运作
.split(/[\[\]\.\s]+/)
将字符串拆分为找到以下一个或多个字符的点:[] .
。现在,由于这些字符也位于字符串的开头和结尾,.shift()
会丢弃第一个元素,而.pop()
会丢弃最后一个元素,这两个元素都是空字符串。但是,您可能希望使用.filter()
,并且可以将第2行和第3行替换为:
var arr = str.split(/[\[\]\.\s]+/).filter(function(elem) { return elem.length > 0; });
现在您可以使用jQuery / JS来遍历值:
$.each( arr, function(i,v) {
console.log( v ); // outputs the i'th value;
});
arr.length
将为您提供所拥有的元素数量。
答案 1 :(得分:0)
如果你想获得" ["和"]"并且数据是常规的,并且始终具有以下模式:
'[chars][chars]...[chars]'
然后你可以使用match来获取字符,以获得不是'#" ["或"]":
var values = '[value01][value02 ][value03 ][value04 ]'.match(/[^\[\]]+/g)
返回一个数组,因此 values 是:
["value01", "value02 ", "value03 ", "value04 "]
匹配受到广泛支持,因此没有跨浏览器问题。
答案 2 :(得分:0)
这是一个小提琴:http://jsfiddle.net/5xVLQ/
正则表达式:/(\ w)+ / ig
使用\ w(字母数字组合)匹配所有单词。空格,括号,圆点,方括号都是不匹配的,所以它们不会被返回。
我所做的是创建一个对象来保存键/值对中的结果,例如v1:' value01'。您可以遍历此对象,也可以使用objRes.v1
直接访问这些值var str = '[value01][value02 ][value03 ]. [value04 ]';
var myRe = /(\w)+/ig;
var res;
var objRes = {};
var i=1;
while ( ( res = myRe.exec(str) ) != null )
{
objRes['v'+i] = res[0];
i++;
}
console.log(objRes);