我有这个字符串
java=10514;js=237;jsp=3995;web=5;xml=42
我想在单独的变量中提取每种语言的值编号,使用 javascript 和正则表达式,对于“java”情况,如下
(?<=java=).*?(?=;|$)
我试过这段代码
var myString = "java=10514;js=237;jsp=3995;web=5;xml=42";
var regexp_java = new RegExp('(?<=java=).*?(?=;|$)', 'g');
var ncloc_java = sonar_myString.match(regexp_java);
var regexp_js = new RegExp('(?<=js=).*?(?=;|$)', 'g');
var ncloc_js = sonar_myString.match(regexp_js);
var regexp_jsp = new RegExp('(?<=jsp=).*?(?=;|$)', 'g');
var ncloc_jsp = sonar_myString.match(regexp_jsp);
var regexp_web = new RegExp('(?<=web=).*?(?=;|$)', 'g');
var ncloc_web = sonar_myString.match(regexp_web);
var regexp_jsp = new RegExp('(?<=jsp=).*?(?=;|$)', 'g');
var ncloc_jsp = sonar_myString.match(regexp_jsp);
但它不起作用。
如有任何建议,我们将不胜感激,并提前致谢
最佳答案
我相信您在这里使用了错误的数据结构。与其尝试为每种语言使用单独的变量,不如使用 HashMap 。首先拆分为分号处的字符串,然后将其流式传输以获取每种语言和值。
var input = "java=10514;js=237;jsp=3995;web=5;xml=42";
var map = {};
input.split(";").forEach(x => map[x.split("=")[0]] = x.split("=")[1]);
console.log(map);
关于JavaScript 和正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74927205/