3

我有一个名为 cookie 的 javascript 字符串,它看起来像这样:

__utma=43024181.320516738.1346827407.1349695412.1349761990.10; __utmz=43024181.1346827407.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=43024181.19.10.1349761990; __utmc=43024181; language=en

它可以有更多;xxxxxx; 但总是条目将被;包围。现在我想将我的 var 拆分为一个数组并搜索条目“language=xy”,该条目应保存在“newCookie”中。

谁能帮助我,我完全坚持将 var 拆分为数组并搜索条目。

感谢帮助和分享

4

2 回答 2

3
var cookie = '__utma=43024181.320516738.1346827407.1349695412.1349761990.10; __utmz=43024181.1346827407.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=43024181.19.10.1349761990; __utmc=43024181; language=en;';

var cookie_array = cookie.split(';'); // Create an Array of all cookie values.

// cookie_array[0] = '__utma=43024181.320516738.1346827407.1349695412.1349761990.10'
// cookie_array[1] = '__utmz=43024181.1346827407.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'
// cookie_array[2] = '__utmb=43024181.19.10.1349761990'
// cookie_array[3] = '__utmc=43024181'
// cookie_array[4] = 'language=en'

var size = cookie_array.length; // Get Array size to prevent doing lookups in a loop.

for (var i = 0; i < size; i++) {
    var keyval = cookie_array[i].split('='); // Split into a key value array

    // What we're trying to find now.
    // keyval[0] = 'language'
    // keyval[1] = 'en'

    if (keyval[0] == 'language') { //keyval[0] is left of the '='
        //write new cookie value here
        console.log('Language is set to ' + keyval[1]);  // keyval[1] is right side of '='
    }
}

希望这可以帮助你。

有关该split()方法的更多信息,请查看split()Mozilla Developer Network (MDN) 文档

于 2012-10-09T06:18:35.730 回答
0

为此使用一个简单的正则表达式:

var getLanguage = function(cookie){
    var re = new RegExp(/language=([a-zA-Z]+);/);
    var m = re.exec(cookie);
    return m?m[1]:null;
};

var lang = getLanguage('__utma=43024181.320516738.1346827407.1349695412.1349761990.10; __utmz=43024181.1346827407.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=43024181.19.10.1349761990; __utmc=43024181; language=en;'); 
// lang = "en"
于 2012-10-09T07:16:01.633 回答