拆分JavaScript字符串

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; 但总是由; 包围。现在我想将我的变量拆分为数组并搜索条目“language = xy”,这个条目应该保存在“newCookie”中。 请问有人可以帮助我吗?我完全陷入了将变量拆分为数组并搜索条目的困境中。 感谢您的帮助和共享。

1
@user1109719 Java !== JavaScript. (注:该句表达的意思是Java不等于JavaScript) - Brombomb
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) 文档

1
应该是 ; i < size 而不是 ; i<= size - geocar
谢谢@Brombomb,但最后一个问题是变量cookie现在是否等于language=en?或者你可以告诉我如何设置它吗?这将非常好,因为我完全不懂JavaScript。 - Fabian Boulegue

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接