我正在通过JavaScript将BBCode写入HTML praser。我用[b],[i],[img],...标签成功,但是用[list]
标签,我不知道怎么做,因为它的元素可能是2,3,n,... Can你帮我转换自:
[list]
item 1
item 2
item 3
[/list]
到
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<ul>
非常感谢。
答案 0 :(得分:1)
如果你正在使用@Dai正在讨论的indexOf
,split
和substring
这种可怕的组合,那么类似于以下的内容将会这样做。
var start = this.value.indexOf("[list]"),
ending = this.value.indexOf("[/list]"),
lines = this.value.substring(start + 7, ending - 1).split("\n");
//perform loop on `lines`:
// "<li>" + lines[i] + "</li>"
基本上,这将获得[list]
和[/list]
的起始位置,然后获取它们之间的线。您会注意到在substring()
中,我说start+7
和ending-1
。这可以通过以下事实来解释:实际行的起始位置将是索引[list]
+ 字符串的实际长度[list]
+ 输入字符。结束减去一个以删除输入字符。更好的方法是简单地添加6来启动而不是7,减去零,然后只删除任何空数组值,但是,这两种方式都可以,具体取决于您需要为用户提供的确切语法。
请记住,lines
变量将保存在两个列表bbcode之间输入的所有行,这意味着您必须遍历它们,然后用<li></li>
标记包装它们。此外,我建议验证多项内容,例如确保start > ending
并多次执行此操作,以便您知道[list]
的每次出现,而不仅仅是第一次出现。