繁体   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