簡體   English   中英

用 HTML 標簽替換字符串中的特定字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM