【发布时间】:2021-03-23 07:29:08
【问题描述】:
下面我给出了一个简单的字符串。它就像示例字符串,模式可能保持不变,但字符串本身可能会改变。
输入:{#Hi#},请{#don't#} {#mark#} 这个{#question#} 为 {#duplicate#}。
输出应该是:“Hi”、“don't”、“mark”、“question”、“duplicate”
我在 JS 中尝试过其他方法,如下所示。添加以下代码仅作为示例。为了清楚起见,请参阅输入和输出。
function extractString(template, initChar, finalChar) {
let i = 0;
let data = [];
do {
if (template[i] == initChar) {
for (let j = i + 1; j < template.length; j++) {
if (template[j] == finalChar) {
data[data.length] = template.slice(i + 1, j);
i = j + 1;
break;
}
}
}
} while (++i < template.length);
return data;
}
extractString(
"#adj#, #brown# fox jumps over the lazy #dog# new one.",
"#",
"#",
);
但以上仅适用于单个字符。
任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
也许以
{#(.*?)#}为起点,尝试提取捕获的组。 -
好的,我试试。
-
或者如果你确定两个#之间没有‘#’,最好使用#([^#]*)
-
可以的。我刚刚举了一个例子,开始和结束字符之间可以有任何字符。
-
如果有这样的例子 {#someth#}ing#} 那么你就会遇到问题。
标签: javascript regex string