0

我想从 javascript 字符串中获取特定值,而不使用indexOfor之类的方法substr。是否有任何预定义的方法这样做?

例如,我有一个字符串,

var str = "a=1|b=2|c=3|d=4|e=5|f=6";

我想从上面的字符串中获取 c 的值,如何直接实现呢?

4

7 回答 7

2

您可以尝试:

str.split('|').find(value => value.startsWith('c=')).split('=')[1]

您还可以使用以下方法将其转换为对象:

const data = str.split('|').reduce((acc, val) => {
  const [key, value] = val.split('=');
  acc[key] = value;
  return acc;
}, {});

data.c // 3
于 2018-08-06T12:48:43.560 回答
1

在这种情况下,使用split

var str = "a=1|b=2|c=3|d=4|e=5|f=6";

var parts = str.split('|');
var value = parts[2].split('=')[1];

console.log(value);

或者也许map是,让所有值在之后使用:

var str = "a=1|b=2|c=3|d=4|e=5|f=6";
var values = str.split('|').map(e => e.split('='));

console.log(values);

于 2018-08-06T12:48:22.530 回答
1

使用正则表达式可以解决这个问题

const str = "a=1|b=2|c=3|d=4|e=5|f=6";
const matches = str.match(/c=([0-9]+)/);

console.log(matches[1]);

参考: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

于 2018-08-06T12:52:32.927 回答
0

尝试这个 -

var str = "a=1|b=2|c=3|d=4|e=5|f=6";
str.split('|')[2].split('=')[1];
于 2018-08-06T12:51:26.710 回答
0

我建议首先拆分和映射成某种形式的可读数据结构。按字符串查找容易出现拼写错误。

const mappedElements = str
  .split('|')
  .map(element => element.split('='))
  .map(([key, value]) => ({ key: value }));
于 2018-08-06T13:01:30.733 回答
0

您可以将该字符串转换为关联数组或对象

var str = "a=1|b=2|c=3|d=4|e=5|f=6";

var obj = {}; //[] for array

str.split("|").map(o => {
  var el = o.split("=");
  obj[el[0]] = el[1];
})


console.log(obj.a)
console.log(obj.b)
console.log(obj.c)

于 2018-08-06T13:03:18.437 回答
0

数组过滤器方法对于此类操作可以是内存高效的。


var cOutput = str.split('|').filter( (val) => {
    const [k,v] = val.split('=');  
    return k=='c' ? v : false }
)[0].split('=')[1];

请参阅阵列过滤器

于 2018-08-06T13:31:33.217 回答