Javascript 使用给定格式从字符串中提取数据
作为一名最近转向JS的python程序员,我使用了一个名为 “解析”。 您提供了一个字符串模板和实际字符串,它将返回所需的数据。例如:Javascript 使用给定格式从字符串中提取数据,javascript,Javascript,作为一名最近转向JS的python程序员,我使用了一个名为 “解析”。 您提供了一个字符串模板和实际字符串,它将返回所需的数据。例如: parse("It's {}, I love it!", "It's spam, I love it!") 将返回垃圾邮件 我一直在寻找解决此问题的JS解决方案,除此之外,我找不到任何解决方案: 我已经试过了,但效果不太好。 提前感谢您,GoldPython您可以通过使用RegExp实现这一点 首先,您需要转义在RegExp中具有特殊含义的字符: var t
parse("It's {}, I love it!", "It's spam, I love it!")
将返回垃圾邮件
我一直在寻找解决此问题的JS解决方案,除此之外,我找不到任何解决方案:
我已经试过了,但效果不太好。
提前感谢您,GoldPython您可以通过使用RegExp实现这一点 首先,您需要转义在RegExp中具有特殊含义的字符:
var toMatch = "I don't understand it, but: It's spam, I love it! I really really love it!";
var pattern = "It's {}, I love {}!";
function pythonParse(pattern, toMatch, bShortest) {
pattern = pattern.replace(/\\/g,"\\\\");
pattern = pattern.replace(/\$/g, "\\$");
pattern = pattern.replace(/\^/g, "\\^");
pattern = pattern.replace(/\(/g, "\\(");
pattern = pattern.replace(/\)/g, "\\)");
pattern = pattern.replace(/\[/g, "\\[");
pattern = pattern.replace(/\]/g, "\\]");
pattern = pattern.replace(/\%/g, "\\%");
pattern = pattern.replace(/\?/g, "\\?");
pattern = pattern.replace(/\:/g, "\\:");
pattern = pattern.replace(/\//g, "\\/");
pattern = pattern.replace(/\*/g, "\\*");
pattern = pattern.replace(/\./g, "\\.");
pattern = pattern.replace(/\+/g, "\\+");
pattern = pattern.replace(/\|/g, "\\|");
var lazy = "";
if(bShortest)
lazy = "?";
// Replace the parse pattern {} with (.*) regex pattern
pattern = pattern.replace(/\{\}/g, "(.*" + lazy + ")");
// Then you can use this pattern to retrieve the result
var matches = toMatch.match(new RegExp(pattern));
// Count results
if(!matches)
return "";
if(matches.length > 2) {
matches.shift();
return matches;
}
else
return matches[1];
}
var result = pythonParse(pattern, toMatch, true);
console.log(result);
请参见此处的工作示例:
编辑以允许使用可选的
bShortest
boolean参数进行延迟比较。已找到正则表达式解决方案,谢谢:)
为什么它工作不好?向我们展示您的尝试您应该能够通过常规表达式实现您想要的功能Regexp呢?