2017-03-11 5 views
1

Ich mache eine Web-App, und in meiner Admin-Seite gibt es eine Funktion, um eine dynamische Eingabe hinzuzufügen. Der Admin wird einen Text in die Eingabe textarea wie:Wie zu tun String ersetzen in Javascript

'sample: _4_' | 'sample2: _some_' 

Was ich erreichen möchte ist, dass ich ersetzen möchte die erste '-<p> und die zweite '-</p> und wenn Separator (|) trifft, ersetzen Sie wieder die erste ' bis <p> und zweite ' bis </p>. Die endgültige Ausgabe wäre

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

Ist es möglich? Ich kenne den Code wirklich nicht. Vielen Dank!

Antwort

1

Sie können die JavaScript-Funktionen split und join verwenden, um alle Vorkommen in einer Zeichenfolge (die eigentlich ein char-Array ist) zu ersetzen.

Versuchen Sie folgendes:

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

Hallo zu ersetzen! Es funktioniert jetzt! Vielen Dank, mein Herr!!!!!!! – duterte

+0

Sind Sie sicher, dass die Zeichenfolge ** genau ** das enthält: ''| ""? –

+0

Es funktioniert jetzt! Ich habe die aktualisierte Antwort nicht gesehen! :) Vielen vielen Dank, Sir!!!!!!!! – duterte

1

Sie diese Lösung versuchen können replace auf Zeichenfolge mit split und join in Kombination mit:

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

dieses Versuchen

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("|"," "); 

Hier ist die Geige https://jsfiddle.net/j64u5em6/1/

0

You've asked für eine Art und Weise auch _ mit <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

Danke! Es klappt! @Andres – duterte