将自定义文本样式代码转换为html

时间:2017-11-24 07:45:05

标签: javascript

我有一个示例字符串,它使用自定义样式代码用于文本,组合总是在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);

但问题是我应该在另一个开始之前关闭标签。那么任何提示你们会怎么做这件事?

1 个答案:

答案 0 :(得分:1)

您应该使用2 switch语句逐个解析标识符,以减少代码并翻转解析顺序以便能够相应地关闭标记

&#13;
&#13;
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;
&#13;
&#13;