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」に保存する必要があります。

誰かが私を助けてくれませんか?私は変数を配列に分割してエントリを検索することに完全に行き詰まっています。

助けて共有してくれてありがとう

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 に答える