[英]How do I parse a string and get next 6 characters?
我有這樣的字符串:
let str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP";
我如何解析此字符串以僅獲取例如“245454”? 我假設它必須基於 'nicetomeetyou=' '=' 之后的值始終為 6 個字符。
您可以使用split
提取部分(名稱和值),並Object.fromEntries
將這些對轉換為 object。然后您可以通過該 object 的屬性訪問每個值:
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 返回的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
所以你用不同的分隔符重新發明了查詢。 把它設為 & 你就可以使用內置的 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"));
如果你想用 ^ 保留它,拆分和 map
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);
您可以將所有^
值替換為&
並通過URLSearchParams運行它以獲取您要查找的值:
const str = "Hello=322484^nicetomeetyou=245454^howdoIdothis=11111a^EP"; const params = new URLSearchParams(str.replace(/\^/g, '&')) console.log(params.get('nicetomeetyou'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.