簡體   English   中英

將自定義文本樣式代碼轉換為html

[英]Converting custom text style code to html

我有一個示例字符串,該字符串使用文本的自定義樣式代碼,組合始終以2個單詞表示,第一個單詞為N或B(普通,粗體),第二個單詞為L或R或C(左,右,中)。 因此,組合格式為NL,BL等...

現在,我想使用CKEditor並將其顯示為HTML代碼,因為CKEditor需要它們。 您會提出什么建議呢? 我嘗試根據這樣的字符分割字符串:

var fields = contentFromDB.split(/(NL|BL|NR|BR|NC|BC)/g);

然后在for循環中使用ifs處理字符串:

if(fields[i] = ("NL")) {
} else if(fields[i] = ("BL")) {
    convertedString += "<b>"
} else if(fields[i] = ("NR")) {
} else if(fields[i] = ("BR")) {
}

但是事情是我應該在另一個開始之前關閉標簽。 那么有什么秘訣,你們會怎么做?

您應該使用2條switch語句逐個字母地解析標識符,以減少代碼並翻轉解析順序以能夠相應地關閉標簽

 var contentFromDB = ""; contentFromDB += "NLLorem ipsum dolor sit amet"; contentFromDB += "BLLorem ipsum dolor sit amet"; contentFromDB += "NCLorem ipsum dolor sit amet"; contentFromDB += "BCLorem ipsum dolor sit amet"; contentFromDB += "NRLorem ipsum dolor sit amet"; contentFromDB += "BRLorem ipsum dolor sit amet"; var fields = contentFromDB.split(/(NL|BL|NR|BR|NC|BC)/g); var convertedString = ""; for(let i = 0; i<fields.length; i++){ let currentIdentifier = fields[i]; if(currentIdentifier.trim() == "") continue; switch(currentIdentifier[1]){ case "L": convertedString += "<p>"; break; case "C": convertedString += "<p align='center'>"; break; case "R": convertedString += "<p align='right'>"; } // Increase the loop walker to be able to get // The text and close the tag accordingly i++; switch(currentIdentifier[0]){ case "N": convertedString += fields[i] + "</p>"; break; case "B": convertedString += "<b>" + fields[i] + "</b></p>"; break; } } document.write(convertedString); 
 Result of parsing: 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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