【问题标题】:Split Javascript String拆分 Javascript 字符串
【发布时间】:2012-10-09 06:11:35
【问题描述】:

我有一个名为 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 拆分为数组并搜索条目。

感谢您的帮助和分享

【问题讨论】:

  • @user1109719 Java !== JavaScript。

标签: javascript split var


【解决方案1】:
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

【讨论】:

  • 应该是; i &lt; size 而不是; i&lt;= size
  • 谢谢@Brombomb,但最后一个问题是 var cookie now == language=en 吗?或者你能告诉我如何设置它;)?会非常好,我是一个完全 javascript 的菜鸟。
【解决方案2】:

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

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-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多