基于字符串列表数组动态查找索引

时间:2018-02-20 23:42:00

标签: javascript ecmascript-6

如何根据

下面的示例字符串数组切换字符串
[
    'PAP02-123-101-000-000-000-000-0000-SP-01-01',
    'PAP02-123-102-000-000-000-000-0000-SUN-01-02',
    'PAP02-123-102-000-000-000-000-0000-SUT-01-01'
]

这是最终输出

SP-01-01
SUN-01-02
SUT-01-01

以下是我能想到的实现所需输出的内容

const str = 'PAP02-123-102-000-000-000-000-0000-SUN-01-02';
const newStr = str.substring(str.indexof(str.match(/^(SP|SUP|SUN)$/)))

4 个答案:

答案 0 :(得分:1)

/(SP|SUP|SUN|SUT)+-\d{2}-\d{2}/匹配您的所有示例。请参阅此regex101 example



[
  'PAP02-123-101-000-000-000-000-0000-SP-01-01', 
  'PAP02-123-102-000-000-000-000-0000-SUN-01-02', 
  'PAP02-123-102-000-000-000-000-0000-SUT-01-01'
].forEach(str=>console.log(str.match(/(SP|SUP|SUN|SUT)+-\d{2}-\d{2}/)[0]));




答案 1 :(得分:1)

您可以splitreversedestructure

此方法适用于任何字符串,因为无论每个标记的长度如何,都会获得最后三次出现。

var array = [
  'PAP02-123-101-000-000-000-000-0000-SP-01-01',     
  'PAP02-123-102-000-000-000-000-0000-SUN-01-02', 
  'PAP02-123-102-000-000-000-000-0000-SUT-01-01'
];

var result = array.map((s) => {
  let [a, b, c] = s.split('-').reverse();
  return `${c}-${b}-${a}`;
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:0)

将它们包起来:

var array = [
  'PAP02-123-101-000-000-000-000-0000-SP-01-01',     
  'PAP02-123-102-000-000-000-000-0000-SUN-01-02', 
  'PAP02-123-102-000-000-000-000-0000-SUT-01-01'
];

var result = array.map(s => s.substr(35));

console.log(result);
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

答案 3 :(得分:0)

对于这三个项目,您可以在/ S。* /

上获得匹配的索引