【发布时间】:2020-02-14 02:34:12
【问题描述】:
我有一大块文本,我已经用新行分割了,所以数组中的每个项目都是一行文本。
我正在遍历这些行并试图检测一行包含</mark>但不包含<mark>的位置,如果满足此条件,则删除</mark>(因为它丢失了一个开始标签)。
final_formatted_log_split = logtext.split("\n");
for (i = 0, l = final_formatted_log_split.length; i < l; i++) {
if (final_formatted_log_split[i].includes("<mark>") === false) {
if (final_formatted_log_split[i].includes("</mark>") === true) {
var removed_mark = final_formatted_log_split[i].replace("</mark>", "");
}
}
}
var final_formatted_log = final_formatted_log_split.join("\n");
console.log(final_formatted_log);
并且此控制台日志仍然包含在不包含
的文本中为了超级清楚,预期的结果如下:
如果一行是这样的:
line of text here</mark>
然后它需要删除</mark>,因为它不包含开口<mark>
我怀疑这与 === 错误有关,但根据我在网上阅读的内容,其他人如何使用 .includes 来查看某些内容是否“不包含”
【问题讨论】:
-
同一行可以有多个
<mark>s或嵌套的吗? -
@CertainPerformance 尽管
replace函数也应该删除重复项... -
OP- 你能给我们一个你的代码不起作用的文本行的例子吗?之前是什么,之后是什么?
-
@Gibor 不幸的是没有,如果您没有指定带有 g 标志的正则表达式,replace 函数只会替换第一次出现 - 请参阅第一个演示中的第二个变体: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 或在同一页面下:
substr(模式)
标签: javascript