Typescript / Javascript - 拆分字符串但保留拆分模式

时间:2021-07-04 03:35:37

标签: javascript string split

假设我有一个字符串“bbbX1cccY1dddA1Z1”

我使用正则表达式模式拆分,但拆分模式消失了。我想在输出中保留拆分的内容

错误输出

["bbb", "ccc", "ddd"]

需要的输出

["bbb", "X1", "ccc", "Y1", "ddd", "A1", "Z1"]

类似这个问题的东西 Split string into a list, but keeping the split pattern

2 个答案:

答案 0 :(得分:1)

您可以在这里使用正则表达式

/(?=[A-Z])|(?<=\d)/

如果有 CAPITAL LETTER ON RIGHT SIDE OR number on the left side,下面的正则表达式将拆分字符串。

const str = "bbbX1cccY1dddA1Z1";
const result = str.split(/(?=[A-Z])|(?<=\d)/);

console.log(result);

如果将 CAPITAL LETTER and a number 组合在一起,则下面的正则表达式将起作用...

const str = "bbbX1cccY1dddA1Z1";
const result = str.split(/([A-Z]\d)/).filter(s => s);

console.log(result);

答案 1 :(得分:0)

假设您的分隔符模式为 [A-Z]1,您可以选择以下任一选项

  1. 使用组合的正向前瞻和后视来分隔分隔符之前或之前的字符串

    str.split(/(?=[A-Z]1)|(?<=[A-Z]1)/)
    

    请注意,浏览器后视支持仍然是 reasonably patchy。如果您需要 Sarafi 支持(MacOS 或 iOS),请勿使用。

  2. 使用捕获组来包含分隔符并过滤掉空值

    str.split(/([A-Z]1)/).filter(s => s.length)