【发布时间】:2020-11-28 02:07:43
【问题描述】:
例如:
str = "A=sample_text1; B=sample_text2; C=sample_text3;";
如何获取“A=”之后的文本,即“sample_text1”? (sample_text1 的长度可以很长,所以 str.substring 在这里不起作用)
【问题讨论】:
标签: javascript regex string
例如:
str = "A=sample_text1; B=sample_text2; C=sample_text3;";
如何获取“A=”之后的文本,即“sample_text1”? (sample_text1 的长度可以很长,所以 str.substring 在这里不起作用)
【问题讨论】:
标签: javascript regex string
看起来你的字符串有一个结构,其中有多个字段,每个字段表示为:
[KEY]=[VALUE];
您可以使用常见的字符串和数组方法,如split 和map 来提取您需要的内容。在这种情况下,您似乎想要第一个字段的值:
const str = 'A=sample_text1; B=sample_text2; C=sample_text3;';
const result = str.split(';').map(s => s.split('=').pop().trim()).shift();
console.log(result); //=> 'sample_text1'
【讨论】:
https://regexr.com 对于创建和测试正则表达式非常有用。
const match = "A=sample_text1; B=sample_text2; C=sample_text3;".match(/A=([^;]*)/);
let value = match !== null ? match[1] : undefined;
在这种情况下,您可以获取A 的值
【讨论】:
您可以使用正则表达式来捕获被= 和; 包围的每个组:
const str = "A=sample_text1; B=sample_text2; C=sample_text3;";
const regexp = "=(.*?);";
const values = [...str.matchAll(regexp)];
const aValue = values[0][1];
console.log(aValue);
【讨论】:
这可能有点矫枉过正,但要轻松访问所有键/值,您可以使用Object.fromEntries:
let str = "A=sample_text1; B=sample_text2; C=sample_text3;";
let values = Object.fromEntries(
str
// Split all the pairs
.split(";")
// Remove the last empty element
.slice(0,-1)
// map to a [key, value] array to pass to Object.fromEntries
.map(i => i.split("=").map(j => j.trim())));
// get a value using a key
console.log(values["A"]) // sample_text1
// check if a key is present
console.log("C" in values) // true
console.log("D" in values) // false
它看起来比 cmets 和控制台日志更长,它可以放在一行中。
请注意,这当然是假设字符 = 或 ; 都不能成为键或值的一部分。
【讨论】: