gpt4 book ai didi

javascript - 如何使用另一个字符串作为模板从一个字符串中提取数据?

转载 作者:行者123 更新时间:2023-11-30 10:38:56 24 4
gpt4 key购买 nike

我正在寻找一种有效的方法来使用另一个字符串作为模板从一个字符串中提取数据。伪代码:

var mystring = "NET,1:1,0,ipv4,192.168.1.7,255.255.255.0,192.168.1.1";
var mytemplate = "NET,[address],[lock_state],[ip_type],[ip],[netmask],[gateway]";
var result = mysteryMethod(mystring,mytemplate);
result:
{
address: '1:1',
lock_state: '0',
ip_type: 'ipv4',
ip: '192.168.1.7',
netmask: '255.255.255.0',
gateway: '192.168.1.1'
}

在这种情况下有一个逗号分隔符,但并非所有字符串都将被分隔或将具有不同的分隔符。要解析的字符串都不包含方括号。这可能和/或明智地使用正则表达式吗?在这种情况下,速度至关重要。一如既往,非常感谢您的帮助。

最佳答案

一个解决方案位于 http://jsfiddle.net/CrossEye/Kxe6W/

var templatizedStringParser = function(myTemplate, myString) {

var names = [];
var parts = myTemplate.replace( /\[([^\]]+)]/g, function(str, name) {
names.push(name);
return "~";
}).split("~");

var parser = function(myString) {
var result = {};
remainder = myString;
var i, len, index;
for (i = 0, len = names.length; i < len; i++) {
remainder = remainder.substring(parts[i].length);
index = remainder.indexOf(parts[i + 1]);
result[names[i]] = remainder.substring(0, index);
remainder = remainder.substring(index);
}
result[names[names.length - 1]] = remainder;
return result;
};

return myString ? parser(myString) : parser;
};

你可以这样使用它

console.log(templatizedStringParser(myTemplate, myString));

或者这个:

var parser = templatizedStringParser(myTemplate);
console.log(parser(myString));

我匆忙完成此操作时,几乎可以肯定其中存在一些问题。使用“~”可能对您不起作用。如果您有边界问题,可能还有其他问题,但它可能涵盖许多情况。

关于javascript - 如何使用另一个字符串作为模板从一个字符串中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12333168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com