jquery - 将字符串转换为对象,url被剥离

时间:2013-07-23 08:20:27

标签: jquery

我正在将字符串转换为对象,但它正在剥离链接, 请修复我的代码,以便它不能剥离url / link。 目前正在剥离这个

url("http://localhost/xyz.jpg")url("http

        var style = 'background-image:url("http://localhost/xyz.jpg");
                    font-size: 20px;font-weight: 300;padding: 20px 10px;';
        if (typeof style != 'undefined'){
            var att = style.slice(0,-1).split(';');
            var obj = {};
            for (var i = 0; i < att.length; i++) {
                var parts = att[i].split(':');
                obj[parts[0]] = parts[1].substring(1);
            }
            console.log( obj);
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您需要确保在split()之后只获得两个块:

而不是:

var parts = att[i].split(':');

这样做:

var parts = att[i].split(':');
parts = [parts.shift(), parts.join(':')];

示例:

> parts = 'background-image:url("http://localhost/xyz.jpg");'.split(':')
["background-image", "url("http", "//localhost/xyz.jpg");"]
> parts = [parts.shift(), parts.join(':')]
["background-image", "url("http://localhost/xyz.jpg");"]

答案 1 :(得分:1)

您可以替换

var parts = att[i].split(':');

对齐
var parts = att[i].split(/:(?!\/)/);

仅在:处分开,后面没有/(使用否定前瞻)。

答案 2 :(得分:1)

尝试

var style = 'background-image:url("http://localhost/xyz.jpg"); font-size: 20px;font-weight: 300;padding: 20px 10px;';
if (typeof style != 'undefined'){
    var att = style.split(';');
    var obj = {};
    for (var i = 0; i < att.length; i++) {
        if(att[i]){
            var parts = att[i].match(/^\s?([a-z-]+):(.*)/);
            obj[parts[1].replace(/^\s+|\s+$/, '')] = parts[2].replace(/^\s+|\s+$/, '');
        }
    }
    console.log( JSON.stringify(obj));
}

演示:Fiddle