私は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>
どうもありがとうございます。
私は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>
どうもありがとうございます。
@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]
最後に 1 を引いて、その入力文字を削除します。これを行うためのより良い方法は、最初に 7 ではなく 6 を追加し、ゼロを減算してから、空の配列値を取り除くことですが、ユーザーに必要な正確な構文によっては、どちらの方法でも問題ありません。
変数は、2 つのリストbbcodelines
の間に入力されたすべての行を保持することに注意してください。つまり、それらをループして<li></li>
タグでラップする必要があります。また、それを確認しstart > ending
てこれを複数回実行するなど、複数のことを検証し[list]
て、最初の発生だけでなくすべての発生を知ることをお勧めします。