如何查找以字符串"word"并从带有char #的字符串中提取信息

How to find cookies which begin with string "word" and extract information from string with char #

本文关键字:quot 字符串 char 信息 提取 何查找 word 查找      更新时间:2023-09-26

我的cookie中有值,在值之间放#,以便以后可以从cookie中提取数据。

现在我需要一种方法来搜索以某个单词开头的cookie,比如"word",当我找到这些cookie时,我想从中提取单词,正如我说的,char #是它的指示器,char %是最后一个字符的指示器。

var name = "word" + "" + n1 + "" + n2 + "" + n3;
var value = v1 + "#" + v2 + "#" + v3 + "#" + v4 + "%";

name为cookie名称,value为cookie值。

我需要一个函数,它将寻找所有以"word"开头的cookie,当找到它时,从cookie值提取v1 v2 v3和v4在4个不同的变量。

我必须查看所有cookie名称如果cookie名称以"word"开头,如

"word and this is the rest of the string"。

这是第一部分。

第二部分是当我们找到具有该名称的cookie时,现在从以#分隔的字符串cookie值中我们需要分离4个变量。

现在清楚我需要什么了吗?

两个辅助函数。

document.cookie字符串解码为具有键/值的对象:

function decodeCookie() {
  var cookieParts = document.cookie.split(";"), 
  cookies = {};
  for (var i = 0; i < cookieParts.length; i++) {
    var name_value = cookieParts[i],
        equals_pos = name_value.indexOf("="),
        name       = unescape( name_value.slice(0, equals_pos) ).trim(),
        value      = unescape( name_value.slice(equals_pos + 1) );
    cookies[":" + name] = value;
  }
  return cookies;
}

搜索该对象并找到以某个搜索词开头的第一个值的方法:

function findCookieByName(searchWord) {
  var cookies = decodeCookie();
  for (name in cookies) {
    var value = cookies[name];
    if (name.indexOf(":" + searchWord) == 0) {
      return value;
    }
  }
}

所以你可以这样做:

var value = findCookieByName("word");
if (value) {
  var pieces = value.split("#"); // > array of values
}

注:我在cookie名称前加上":",以防止与对象的内置属性冲突。例如:你可以将你的cookie命名为__proto__,但这对JavaScript对象来说就不太管用了。因此,我使用前缀存储所有cookie名称。