2016-10-10 135 views
0

我用reactjs創建了網站。對於restAPI的我使用java和CMS是liferay。在liferay我創造了手風琴的短碼,如如何在JavaScript中替換多次出現的字符串?

('[accordion][acc-header]Heading 1[/acc-header][acc-content]Content1[/acc-content][acc-header]Heading 2[/acc-header][acc-content]Content2[/acc-content][/accordion]')

我想替換html元素而不是這個字符串。如何在JavaScript中做?

在這裏你去,

[accordion] 
[acc-header]Heading 1[/acc-header][acc-content]Content1[/acc-content] 
[acc-header]Heading 2[/acc-header][acc-content]Content2[/acc-content]  
[/accordion] 

HTML輸出,

<div class="accordion"> 
    <h3>Heading1</h3> 
    <div class="accordion-content"> 
    content 1 
    </div> 
<h3>Heading2</h3> 
    <div class="accordion-content"> 
    content 2 
    </div> 
</div> 
+0

什麼是所需的HTML輸出? –

+0

@TomFenech,我編輯了我的問題。你可以請現在檢查嗎? – Sathya

回答

2

髒,快捷的方式:

var s = '[accordion][acc-header]Heading 1[/acc-header][acc-content]Content1[/acc-content][acc-header]Heading 2[/acc-header][acc-content]Content2[/acc-content][/accordion]'; 
s.replace(/\[([a-z\-]+)]/g, '<div class="$1">').replace(/\[\/[a-z\-]*]/g, '</div>') 

結果是:

"<div class="accordion"><div class="acc-header">Heading 1</div><div class="acc-content">Content1</div><div class="acc-header">Heading 2</div><div class="acc-content">Content2</div></div>" 

這不會添加<h3>標籤

+0

我編輯了我的問題 – Sathya

+0

這是不公平=)添加了一個編輯,但這不是一個完整的解決方案 – k102

相關問題