我有一个示例字符串,它使用自定义样式代码用于文本,组合总是在2个单词中第一个单词是N或B(正常,粗体),第二个单词是L或R或C(左,右,中心) 。因此组合采用NL,BL等格式......
现在我想使用CKEditor并使用HTML代码显示它,因为CKEditor需要它们。您有什么建议如何解决这个问题?我试着根据这样的字符分割字符串:
<div class='flexbox flex-column height-100-percent'>
<RowOne class='flex height-50-percent' />
<RowTwo class='flex height-50-percent' />
</div>
并且for for循环使用ifs:
处理字符串var fields = contentFromDB.split(/(NL|BL|NR|BR|NC|BC)/g);
但问题是我应该在另一个开始之前关闭标签。那么任何提示你们会怎么做这件事?
答案 0 :(得分:1)
您应该使用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);
&#13;
Result of parsing:
&#13;