2

私はJavaScriptを介してHTMLpraserにBBCodeを書いています。[b]、[i]、[img]、...タグで成功しましたが、[list]タグでは、おそらく2、3、n、...の要素であるため、方法がわかりません。 :

[list]
item 1
item 2
item 3
[/list]

<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<ul>

どうもありがとうございます。

4

1 に答える 1

1

@Dai が話しているとの恐ろしい組み合わせを使用している場合indexOf、次のようなものがそれを行います。splitsubstring

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] 最後に 1 を引いて、その入力文字を削除します。これを行うためのより良い方法は、最初に 7 ではなく 6 を追加し、ゼロを減算してから、空の配列値を取り除くことですが、ユーザーに必要な正確な構文によっては、どちらの方法でも問題ありません。

変数は、2 つのリストbbcodelinesの間に入力されたすべての行を保持することに注意してください。つまり、それらをループして<li></li>タグでラップする必要があります。また、それを確認しstart > endingてこれを複数回実行するなど、複数のことを検証し[list]て、最初の発生だけでなくすべての発生を知ることをお勧めします。

于 2012-09-24T02:22:58.020 に答える