![](/img/trans.png)
[英]Replace all occurrences of html tags and special unicode character from a string
[英]Replace a specific character from a string with HTML tags
有一個文本輸入,如果有一個特定的字符,它必須把它轉換成一個標簽。 例如,特殊字符是*
,2 個特殊字符之間的文本必須以斜體顯示。
例如:
This is *my* wonderful *text*
必須轉換為:
This is <i>my</i> wonderful <i>text</i>
所以我嘗試過:
const arr = "This is *my* wonderful *text*";
if (arr.includes('*')) {
arr[index] = arr.replace('*', '<i>');
}
它用<i>
替換星號,但如果有更多特殊字符則不起作用。
有任何想法嗎?
您可以簡單地創建wrapper
,然后使用正則表達式來檢測是否有任何被*
包圍的單詞,然后簡單地將其替換為任何標簽,在您的示例中是<i>
標簽,因此請參見以下內容
let str = "This is *my* wonderful *text*"; let regex = /(?<=\\*)(.*?)(?=\\*)/; while (str.includes('*')) { let matched = regex.exec(str); let wrap = "<i>" + matched[1] + "</i>"; str = str.replace(`*${matched[1]}*`, wrap); } console.log(str);
你去吧,我的朋友:
var arr = "This is *my* wonderful *text*"; const matched = arr.match(/\\*(?:.*?)\\*/g); for (let i = 0; i < matched.length; i++) { arr = arr.replace(matched[i], `<i>${matched[i].replaceAll("*", "")}</i>`); } console.log(arr);
首先解釋一下,我們通過設置 /g 匹配正則表達式全局注意:與全局標志匹配的匹配返回一個數組。 其次,我們正在尋找位於兩個星號之間的任何字符,我們正在轉義它們,因為它們都是元字符。 .*? 以貪婪的方式匹配所有內容,這樣我們就不會得到這樣的東西my *. ?: 對於非捕獲組,我們將替換與自身匹配但沒有星號的每個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.