我正在檢查字串的值,并將它們與從網格中獲得的值進行比較。但是我得到的文本在實際有用的字符之前有很多不需要的字符。但它們都以 html 標簽結尾,所以我想要做的是削減我從該標簽獲得的價值。
這是我在字串中得到的東西的一個例子:
<i class="icon status red"></i>, 1 - deleted
我希望字串是什么:
1 - deleted
到目前為止,我已經嘗試過:
data.forEach((value: any) =>{
((this.array.find(x => x.value === value['field'])).text).split("</i>")
});
這只是洗掉了標簽,但我仍然得到了其余的文本。我正在尋找一個簡短的解決方案,而不是這樣的:
list = ["foo","bar","foobar"]
index = list.index("bar")
a = list[index - 1]
b = list[index 1]
print(a, b)
因為我想直接從字串而不是串列中剪切。所以我在想的是我會洗掉所有正確的東西。是否可以 ?
uj5u.com熱心網友回復:
為什么要運行 forEach 回圈。使用 slice 和 split,你可以得到你想要的字串,你去:
let string = "<i class='icon status red'></i>, 1 - deleted"
let list = string.split(",")
console.log(list[1])
uj5u.com熱心網友回復:
可以利用DOMParserandDOMParser.parseFromString來訪問文本內容...
function getTextContentFromMarkup(markup) {
return new DOMParser()
.parseFromString(markup, "text/html")
.body
.textContent;
}
console.log(
`getTextContentFromMarkup('<i ></i>, 1 - deleted') ...
"${ getTextContentFromMarkup('<i ></i>, 1 - deleted')}"`
);
上面的腳本可以很容易地適應一種更強大的方法,它只回傳最后一個文本節點的值......
function getLastTextNodeValueFromMarkup(markup) {
return [
...new DOMParser()
.parseFromString(markup, "text/html")
.body
.childNodes
]
.filter(node => node.nodeType === 3)
.at(-1)
?.nodeValue;
}
console.log(
`getLastTextNodeValueFromMarkup('<i ></i>, 1 - deleted') ...
"${ getLastTextNodeValueFromMarkup('<i ></i>, 1 - deleted')}"`
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420851.html
標籤:
