抓取 javascript 中两个特定字符前后的子串
Grab substring after and before two specific characters in javascript
我有一个这样的 url 搜索键:
?retailerKey=A 我想获取 retailerKey 子字符串。我看到的所有示例都以如何在 char 之前使用 indexOf 示例为例。我怎样才能实现这个从字符串中得到这个子字符串?retailerKey=A
使用正则表达式。
以下将 return 字符 ?
和 =
之间的值
var result = "?retailerKey=A".match(/\?(.*)\=/).pop();
console.log(result);
如果您希望始终获取查询符号和等号之间的字符串 ?ThisString=
那么你可以简单地使用 indexOf 例如
str.slice(str.indexOf('?')+1,str.indexOf('='))
您可以 split()
任何 ?
或 =
上的字符串,然后从结果数组中取出中间项 ([1]
)。
const data = "?retailerKey=A";
const result = data.split(/[\?=]/)[1];
console.log(result);
如果你有多个参数,创建一个对象 fromEntries()
会很有趣。
const data = "?retailerKey=A?otherKey=B";
const keyVals = data.split(/[\?=]/).filter(x => x); // keys and values
const result = Object.fromEntries(keyVals.reduce((acc, val, i) => {
// create entries
const chunkI = Math.floor(i / 2);
if (!acc[chunkI]) acc[chunkI] = [];
acc[chunkI].push(val);
return acc;
}, []));
console.log(result);
使用库可能是更好的选择,但要从头开始:我建议使用 split 和正则表达式。
// split for char equals to ? or & or =;
const url = '/toto?titi=1&tata=2';
const args = url.split(/[\?\&\=]/);
// shift the first element of the list since it the base url before "?"
args.shift();
// detect malformed url
if (args.length % 2) {
console.error('malformed url', args);
}
const dictArgs = {};
for (let i = 0; i < args.length /2; i ++) {
const key = args[2*i];
const val = args[2*i+1];
dictArgs[key] = val;
}
console.log(dictArgs);
我有一个这样的 url 搜索键: ?retailerKey=A 我想获取 retailerKey 子字符串。我看到的所有示例都以如何在 char 之前使用 indexOf 示例为例。我怎样才能实现这个从字符串中得到这个子字符串?retailerKey=A
使用正则表达式。
以下将 return 字符 ?
和 =
之间的值
var result = "?retailerKey=A".match(/\?(.*)\=/).pop();
console.log(result);
如果您希望始终获取查询符号和等号之间的字符串 ?ThisString=
那么你可以简单地使用 indexOf 例如
str.slice(str.indexOf('?')+1,str.indexOf('='))
您可以 split()
任何 ?
或 =
上的字符串,然后从结果数组中取出中间项 ([1]
)。
const data = "?retailerKey=A";
const result = data.split(/[\?=]/)[1];
console.log(result);
如果你有多个参数,创建一个对象 fromEntries()
会很有趣。
const data = "?retailerKey=A?otherKey=B";
const keyVals = data.split(/[\?=]/).filter(x => x); // keys and values
const result = Object.fromEntries(keyVals.reduce((acc, val, i) => {
// create entries
const chunkI = Math.floor(i / 2);
if (!acc[chunkI]) acc[chunkI] = [];
acc[chunkI].push(val);
return acc;
}, []));
console.log(result);
使用库可能是更好的选择,但要从头开始:我建议使用 split 和正则表达式。
// split for char equals to ? or & or =;
const url = '/toto?titi=1&tata=2';
const args = url.split(/[\?\&\=]/);
// shift the first element of the list since it the base url before "?"
args.shift();
// detect malformed url
if (args.length % 2) {
console.error('malformed url', args);
}
const dictArgs = {};
for (let i = 0; i < args.length /2; i ++) {
const key = args[2*i];
const val = args[2*i+1];
dictArgs[key] = val;
}
console.log(dictArgs);