有条件地将字符串拆分为数组

时间:2012-11-13 16:00:14

标签: javascript jquery regex

我有一小段代码需要将字符串拆分为javascript对象。

生成的对象需要看起来像这样:

var myObject = {
valueOne: value,
valueTwo: value,
arrayOfValues: [values] 
}

需要转换的字符串有两种不同的格式。这些格式如下:

1)"MyValues are ('1','2','3')" - 这将被翻译成:

var myObject = {
valueOne: myValues,
valueTwo: are,
arrayOfValues: [1,2,3] 
}

或 2)"MyValue="1"" - 这将被翻译成:

var myObject = {
valueOne: myValue,
valueTwo: =,
arrayOfValues: [1] 
}

我知道我可以像这样拆分这个字符串:

var arr[] = myString.split(" ");

但是根据字符串的构成决定使用哪个分割器,然后将其转换为javascript对象是我不知道的世界。

感谢您的帮助。

编辑 - 我犯了一个小错误,示例编号 2

我更新了它,这是正确的。 - 我收到的字符串格式为:

`"MyValue="1""`

samy-delux,谢谢你的帮助!这很好用,但是对第二个字符串的更改打破了你的榜样。 (对不起,我输错了字符串的格式。)

我正在尽力学习正则表达式。但是还不知道还没有解决这个问题。

1 个答案:

答案 0 :(得分:4)

你去(http://jsfiddle.net/VBmb8/):

function parse(str) {
    var match = str.match(/(\w+)\s?([\w=]+)\s?\('(.+)'\)/);

    return {
        valueOne: match[1],
        valueTwo: match[2],
        arrayOfValues: match[3].split("','")
    };
}

*编辑后*

http://jsfiddle.net/VBmb8/2/

function parse(str) {
    var match = str.match(/(\w+)\s?([\w=]+)\s?\(?['"](.+)['"]\)?/);

    return {
        valueOne: match[1],
        valueTwo: match[2],
        arrayOfValues: match[3].split("','")
    };
}