3 回答

TA貢獻1852條經驗 獲得超7個贊
您可以使用split來提取部分(名稱和值),并將Object.fromEntries這些對轉換為一個對象。然后您可以通過該對象的屬性訪問每個值:
const toObject = (str) =>
Object.fromEntries(str.split("^").map(eq => eq.split("=")));
// Demo
let str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
let obj = toObject(str);
console.log(obj.Hello);
請注意,在示例字符串中,EP沒有對應的=,在這種情況下,返回的對象toObject將undefined分配給屬性EP。要測試該EP屬性是否實際存在,您可以使用in運算符:
const toObject = (str) =>
Object.fromEntries(str.split("^").map(eq => eq.split("=")));
// Demo
let str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
let obj = toObject(str);
console.log("EP" in obj); // true

TA貢獻1841條經驗 獲得超3個贊
因此,您使用不同的分隔符重新發明了查詢。把它設為 & 你就可以使用內置的 URLSearchParams
const str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
const urlParams = new URLSearchParams(str.replace(/\^/g, '&'));
console.log(urlParams.get("Hello"));
console.log(urlParams.get("nicetomeetyou"));
console.log(urlParams.get("howdoIdothis"));
如果你想用 ^留它,一個拆分和映射
var str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
const params = Object.fromEntries(str.split("^").map(s => s.split(/=/)));
console.log(params["Hello"]);
console.log(params["nicetomeetyou"]);
console.log(params["howdoIdothis"]);
如果你只關心這 3 個值
var str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP"
var re = /=([^\^]+)/g;
var out = [];
while(match = re.exec(str)) out.push(match[1]);
console.log(out);
而且因為你似乎只關心一個值
const str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
const val = str.match(/nicetomeetyou=(.{6})/)[1]
console.log(val);

TA貢獻1815條經驗 獲得超6個贊
您可以將所有^
值替換為并通過URLSearchParams&
運行它以獲取您要查找的值:
const str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
const params = new URLSearchParams(str.replace(/\^/g, '&'))
console.log(params.get('nicetomeetyou'))
添加回答
舉報