我有一個字串陣列。我正在使用常規我正在嘗試查找元素出現的索引并從字串中洗掉子字串但是當我添加另一個出現的字符時我遇到了問題
我的解決方案:
const names = [
'COMMENT — CODE | COUNTRY | DATE | TARGET',
'CODE| COUNTRY | DATE |TARGET',
'CODE|| COUNTRY| DATE |TARGET',
'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET',
];
const exp = new RegExp(/—|-/);
const filteredNames = names.map(name => {
const index = name.match(exp)?.index;
return name.slice(index 1)
});
My result:
"CODE | COUNTRY | DATE | TARGET"
"CODE| COUNTRY | DATE |TARGET"
"CODE|| COUNTRY| DATE |TARGET"
"COMMENT 2 — CODE | COUNTRY | DATE | TARGET" <- not correct
但預期的結果:
"CODE | COUNTRY | DATE | TARGET"
"CODE| COUNTRY | DATE |TARGET"
"CODE|| COUNTRY| DATE |TARGET"
"CODE | COUNTRY | DATE | TARGET"
我將非常感謝您在這件事上的任何幫助。
uj5u.com熱心網友回復:
您只需選擇您需要的部分:
const names = [
'COMMENT — CODE | COUNTRY | DATE | TARGET',
'CODE| COUNTRY | DATE |TARGET',
'CODE|| COUNTRY| DATE |TARGET',
'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET',
];
const exp = new RegExp(/(\w (\s*\|*\s*))*\w \s*$/g);
const filteredNames = names.map(name => {
const matches = name.match(exp);
return matches?.[0] || '';
});
console.log(filteredNames);
uj5u.com熱心網友回復:
我們可以在這里嘗試正則運算式替換方法:
var names = [
'COMMENT — CODE | COUNTRY | DATE | TARGET',
'CODE| COUNTRY | DATE |TARGET',
'CODE|| COUNTRY| DATE |TARGET',
'COMMENT 1 — COMMENT 2 — CODE | COUNTRY | DATE | TARGET',
];
var output = names.map(x => x.replace(/(?:.*? — )*([^ |] )/g, "$1"));
console.log(output);
這是這里使用的正則運算式模式的解釋:
(?:.*? — )* match (but do not capture) a "TERM — ", zero or more times
([^ |] ) then capture the final term in $1
然后,我們將每個以管道分隔的條目替換$1為最后一項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464464.html
標籤:javascript 细绳
上一篇:為什么JSON.stringify()\u30FC要ー
下一篇:每個數字與下一個數字相差1
