2017-03-11 149 views
1

我正在製作一個Web應用程序,並且在我的管理員端有一個用於添加動態輸入的功能。管理員將進入文成textarea,如:如何在javascript中替換字符串

'sample: _4_' | 'sample2: _some_' 

我想實現的是,我想更換第一'<p>和第二'</p>當分離器(|)見面,再次更換第一個'<p>和第二個'</p>。最終輸出將是

<p>sample: _4_</p> <p>sample2: _some_</p> 

這可能嗎?我真的不知道代碼。謝謝!

回答

1

您可以使用splitjoin javascript函數來替換字符串中的所有匹配項(實際上它是一個char數組)。

試試這個:

val = val.split("' | '").join("</p> <p>"); 
val = val.split("'").join("<p>"); 
val = val.slice(0,-3) + "</p>"); // Replace the last <p> to </p> 
+0

嗨!它現在工作!先生非常感謝您!!!!!!! – duterte

+0

你確定字符串包含**完全**:this:''| ''? –

+0

它現在有效!我沒有看到更新的答案! :)非常感謝你的先生!!!!!!!! – duterte

1

您可以組合嘗試在字符串中使用replace該解決方案與splitjoin

val = val.split("' | '").join("<p> </p>"); 
val = val.replace(/^'/,"<p>").replace(/'$/,"</p>"); // Replaces first "'" with <p> and last "'" with </p> 
0

試試這個

var str = "'sample: _4_' | 'sample2: _some_'"; 

var i=0; 

for(k=0;k<str.split("'").length+2;k++) 
{ 
str=str.replace("'",function myFunction(){if(i==0) {i=1;return "<p>"; }if (i==1){i=0;return "</p>";} }); 
} 

str=str.replace("|"," "); 

這裏是小提琴 https://jsfiddle.net/j64u5em6/1/

0

You've asked一種方式,同時更換_<b>/</b>

var getReplacement = (function() { 
 
    var replacements = { 
 
    "'": { 
 
     i: 0, 
 
     elements: ["<p>", "</p>"] 
 
    }, 
 
    "_": { 
 
     i: 0, 
 
     elements: ["<b>", "</b>"] 
 
    } 
 
    }; 
 

 
    return function(match) { 
 
    var replacement = replacements[match]; 
 
    if (replacement) { 
 
     return replacement.elements[replacement.i++ % replacement.elements.length]; 
 
    } else { 
 
     return match; 
 
    } 
 
    }; 
 
}()); 
 

 

 
var str = "'sample: _4_' | 'sample2: _some_'"; 
 

 
console.log(str.replace(/'|_/g, getReplacement));

+0

謝謝!有用! @Andres – duterte