[英]How to remove a certain space in Javascript but not all spaces
我正在嘗試刪除一些字符以及空白。 字符串是這樣的:
<table id="myTable"><br/> <tbody><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> </tbody> <br/></table>
我只想刪除<br/>
及其后的空格。 然后使用此代碼逐行拆分,因為它是HTML table
元素。
var table = document.getElementById("myTable").outerHTML
var linebyline = table2.match(/[^\r\n]+/g);
然后用for循環
var oneline = "", i = 0
for (lines in linebyline ){
oneline += linebyline [lines].replace(/<br\/>\s/g,"")
}
我期望刪除<br/>
和空白,但是oneline
的輸出是:
<table id="myTable"> <tbody> <tr> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> </tr> <tr> <td>2</td> <td>2</td> </tr> <tr> <td>2</td> <td>2</td> </tr> <tr> <td>2</td> <td>2</td> </tr> <tr> <td>3</td> <td>3</td> </tr> <tr> <td>3</td> <td>3</td> </tr> <tr> <td>3</td> <td>3</td> </tr> </tbody> </table>
空白空間仍然存在。 如何使用<br/>
及其后的空格刪除所有子字符串?
這是一種使用DOM操作的方法:
const table = document.querySelector("#myTable"); Array.from(table.querySelectorAll("br")).forEach(br => br.remove()) let n; const textNodes = []; const walk = document.createTreeWalker(table, NodeFilter.SHOW_TEXT, null, false); while (n = walk.nextNode()) { textNodes.push(n); } textNodes.forEach(n => { if (!n.textContent.trim().length) { n.remove() } }) console.log(table.outerHTML)
<table id="myTable"><br/> <tbody><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> </tbody> <br/></table>
看來瀏覽器會刪除<br />
元素本身,至少Chrome會刪除。
如果您只有一個字符串而不是DOM中的<table>
元素,則仍可以通過使用DOMParser
解析該字符串來使用此解決方案
您需要一個量詞(例如+
或*
):
let html = `<table id="myTable"><br/> <tbody><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>1</td><br/> <td>1</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>2</td><br/> <td>2</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> <tr><br/> <td>3</td><br/> <td>3</td><br/> </tr><br/> </tbody> <br/></table>` html = html.replace(/<br\\/>\\s*/g, "") console.log(html)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.