我需要删除<annot:annotationLevel><annot:body>并且</annot:body></annot:annotationLevel>仅当该行包含“(a)”到“(zzz)”时
<annot:annotationLevel><annot:body>
</annot:body></annot:annotationLevel>
这是为了看起来像这样的东西:
<annot:annotationLevel><annot:body><p>“(a) Definitions. In this section:</p></annot:body></annot:annotationLevel> <annot:annotationLevel><annot:body><p>“(1) List of Material Interested Parties. The term “List of Material Interested Parties” means the List of Material Interested Parties established under subsection (c)(1).</p></annot:body></annot:annotationLevel> <annot:annotationLevel><annot:body><p>“(2) Oversight Board. The term “Oversight Board” has the meaning given the term in section 5 of PROMESA (48 U.S.C. 2104).</p></annot:body></annot:annotationLevel> <annot:annotationLevel><annot:body><p>“(b) Required Disclosure.</p></annot:body></annot:annotationLevel>
在上面的示例中,(a)和(b)应该annot删除它们的标签,只剩下p标签。
annot
p
注意:它只适用于小写字母字符,不适用于大写字母。(现在我想知道如何区分 alpha 和罗马数字 (i)、(v) 和 (x),因为它们不应该受到影响,但也许以后再说)
我一直在解决这个问题,但我目前的解决方案由于某种原因无法正常工作。在这一个中,我只尝试使用 RegEx 来定位“(a)”而不是其余的。
function annotationWrapCleanups() { let lines = document.querySelector('#textarea3').value.split('\n'); for (let i = 0; i < lines.length; i++) { if (lines[i] !== "" && lines[i].includes('(a) Definitions.')) { lines[i].replace('<annot:annotationLevel><annot:body>', '') lines[i].replace('</annot:body></annot:annotationLevel>', '') } } } .main-textarea { height: 50px; width: 99%; } .main-textarea:focus { outline: none; } .cleanup-btn { padding: 10px; margin-top: 10px; } <textarea class="main-textarea annotation-wrap" id="textarea3"></textarea> <button class="cleanup-btn" onclick="annotationWrapCleanups();">clean</button>
无论如何,提前感谢您的帮助,任何见解将不胜感激!
检查该行是否与 Regex 匹配/<p>“\([a-z]+\)/。
/<p>“\([a-z]+\)/
我们匹配的字符串应该:
<p>"
从这个开始。所以我们正在查看元素文本内容的开头。
这样可以避免匹配(c)第二行中的内容
(c)
\(
匹配一个左括号。
\是逃避(通常在正则表达式中所做的事情。
\
(
[a-z]+匹配一个或多个小写字母
[a-z]+
\)匹配右括号
\)
结合使用这个数字和罗马数字将是一个完全不同的野兽,因为最简单的问题是,你怎么知道它是 (i) 字母还是 (i) 在一个中。
我在片段中为您设置了它,只需单击清理并检查结果是否符合您的要求。我在清理后添加了额外的换行符,以使其更清晰可见。
function annotationWrapCleanups() { const textArea = document.querySelector('#textarea3') let lines = textArea.value.split('\n'); for (let i = 0; i < lines.length; i++) { if (lines[i].match(/<p>“\([a-z]+\)/g)) { lines[i] = lines[i].replace('<annot:annotationLevel><annot:body>', '') lines[i] = lines[i].replace('</annot:body></annot:annotationLevel>', '') } } textArea.value = lines.join('\r\n\n') } document.querySelector('#textarea3').value = `<annot:annotationLevel><annot:body><p>“(a) Definitions. In this section:</p></annot:body></annot:annotationLevel> <annot:annotationLevel><annot:body><p>“(1) List of Material Interested Parties. The term “List of Material Interested Parties” means the List of Material Interested Parties established under subsection (c)(1).</p></annot:body></annot:annotationLevel> <annot:annotationLevel><annot:body><p>“(2) Oversight Board. The term “Oversight Board” has the meaning given the term in section 5 of PROMESA (48 U.S.C. 2104).</p></annot:body></annot:annotationLevel> <annot:annotationLevel><annot:body><p>“(b) Required Disclosure.</p></annot:body></annot:annotationLevel>` .main-textarea { height: 50px; width: 99%; } .main-textarea:focus { outline: none; } .cleanup-btn { padding: 10px; margin-top: 10px; } <textarea class="main-textarea annotation-wrap" id="textarea3"></textarea> <button class="cleanup-btn" onclick="annotationWrapCleanups();">clean</button>