gpt4 book ai didi

javascript - 如何获取字符串中的参数值?

转载 作者:行者123 更新时间:2023-11-30 12:57:41 24 4
gpt4 key购买 nike

这是我一直试图解决的问题...

我们从 ajax 调用中获得了一些数据,结果数据介于其他内容之间,这是一个带有键:值数据的巨大字符串。例如:

“2R=OK|2M=2 行找到|V1=1,2|”

js 是否可以做类似这样的事情:var value = someFunction(str, param);

所以如果我搜索“V1”参数,它将返回“1,2”

我毫不费力地在 Sql 服务器上运行它,但我正在努力使用 js 来解析字符串。

到目前为止,我能够通过像这样的非常基本的 for 循环来做到这一点:

var str = "2R=OK|2M=2 row(s) found|V1=1,2|";
var param = "V1";
var arr = str.split("|");
var i = 0;
var value = "";
for(i = 0; i<arr.length; ++i){
if( arr[i].indexOf(param)>-1 ){
value = arr[i].split("=")[1];
}
}
console.log(value);

如果我把它放到一个函数中它就可以工作,但我想知道是否有更有效的方法来做到这一点,也许是一些正则表达式?但我很讨厌。希望有人可以为我阐明这一点?

谢谢!

最佳答案

这似乎适用于您的特定用例:

function getValueByKey(haystack, needle) {
if (!haystack || !needle) {
return false;
}
else {
var re = new RegExp(needle + '=(.+)');
return haystack.match(re)[1];
}
}

var str = "2R=OK|2M=2 row(s) found|V1=1,2|",
test = getValueByKey(str, 'V1');
console.log(test);

JS Fiddle demo .

并且,要在搜索中包含分隔符(以防止 somethingElseV1 匹配 V1):

function getValueByKey(haystack, needle, separator) {
if (!haystack || !needle) {
return false;
}
else {
var re = new RegExp('\\' + separator + needle + '=(.+)\\' + separator);
return haystack.match(re)[1];
}
}

var str = "2R=OK|2M=2 row(s) found|V1=1,2|",
test = getValueByKey(str, 'V1', '|');
console.log(test);

JS Fiddle demo .

请注意,此方法确实需要使用 new RegExp() 构造函数(而不是使用 /.../ 创建正则表达式文字)以便将变量传递到正则表达式中。

同样,因为我们使用字符串在构造函数中创建正则表达式,所以我们需要对需要转义的字符进行双重转义(首先在字符串中转义,然后在创建的 RegExp 中转义)。

引用资料:

关于javascript - 如何获取字符串中的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18471852/

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