如何在特定位置用破折号分割字符串

时间:2018-11-28 08:41:21

标签: javascript arrays split

我有一个动态创建的数组,如下所示:

["171281-0-001-1", "171281-0-001-2"]

基本上,我是基于一个非常复杂的函数来创建值。但是这里的功能并不重要。基本上,例如171281-0-001-1由帐号+ id组成。 171281-0-001是帐号,1是ID。 破折号可以是任意数字,但最后一个破折号之后始终是id。 如何将这些与我的值区分开来并将其分配给不同的变量?

尝试:

for (let key in this.your_reference) {
  extractedAccountNumber = key.split('-')[0];
  extractedId = key.split('-')[1];
}

但是由于破折号现在可以是任意数字,因此变量的值有误。有想法吗?预先感谢

4 个答案:

答案 0 :(得分:3)

您可以使用map()split()从最后一个数组 index 中获取项目:

var arr = ["171281-0-001-1", "171281-0-001-2"];
var idList = arr.map(d => {
  d = d.split('-');
  return d[d.length - 1];
});
console.log(idList);

答案 1 :(得分:0)

您可以使用包含两组的正则表达式:一个捕获的组,它匹配任何内容,然后匹配一个破折号,然后是另一个捕获的组,用于数字,后跟字符串的结尾:

["171281-0-001-1", "171281-0-001-2"].forEach((str) => {
  // first item in the array is the entire match,
  // but you only care about the two capture groups, so ignore the first item:
  const [,accountNumber, id] = str.match(/(.+)-(\d+)$/);
  console.log(accountNumber);
  console.log(id);
});

答案 2 :(得分:0)

您可以为此使用lastIndexOfsubstring

var arr = ["171281-0-001-1", "171281-0-001-2"];
var ids = arr.map(d => d.substring(d.lastIndexOf('-') + 1));
console.log(ids);

答案 3 :(得分:0)

const arr = ["171281-0-001-1", "171281-0-001-2"];

const accountDetails = arr.map((item) => {
  const itemArr = item.split('-');
  const accountNumber = itemArr.slice(0, itemArr.length -1).join('-');
  const id = itemArr[itemArr.length - 1];

  return {id, accountNumber};
});

console.log(accountDetails);