2012-10-09 1 views
3

У меня яваскрипт строки с именем куки, и это выглядит так:Split 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 

Это может иметь больше; хххххй; но всегда элементы будут окружены; Теперь я хочу разбить мой var на массив и найти запись «language = xy», эта запись должна быть сохранена в «newCookie».

Может ли кто-нибудь помочь мне, пожалуйста, я полностью закрыл разбиение var на массив и поиск записи.

Спасибо за помощь и обмен

+1

@ user1109719 Java == JavaScript!. – Brombomb

+0

Мой плохой. Удалил мой комментарий. – User404

ответ

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) documentation

+1

Должно быть '; i <размер', а не '; i <= size' – geocar

+0

@geocar Ahh yup! Благодаря! обновленный пост – Brombomb

+0

Спасибо @Brombomb, но последний вопрос - это var cookie now == language = en? Или вы могли бы рассказать мне, как его установить;)? Было бы очень приятно, что я полностью javascript noob. –

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"