使用javascript将字符串与字符串分开

时间:2014-06-13 12:47:52

标签: javascript jquery

我有一个字符串,其中每个值都在[]之间,并且最后有一个.。如何从字符串中分隔所有值?

这是示例字符串:

[value01][value02 ][value03 ]. [value04 ]

//want something like this 
v1 = value01;
v2 = value02;
v3 = value03;
v4 = value04  

值的数量不是恒定的。如何从该字符串中单独获取所有值?

3 个答案:

答案 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"]

JS FIDDLE DEMO

如何运作

.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);