2017-05-31 69 views
1

我試圖建立一個功能,接收這種格式的字符串:替換字符串邏輯

「你好窩**」

的*可以在任何地方的字符串。

它應該返回:

<span>hello wor</span><input type='text'></input> 

因此字符串可能是 「HEL **窩* d」 也

和回報應該是:

<span>hel</span><input type='text'> <span>wor</span><input type='text'><span>d</span> 

我能做到這一點每個字符上都有一個循環,但我正在尋找更優雅的解決方案。

我認爲,這可能與正則表達式來解決,並使用替代我的「*」覆蓋:

var text = "hello wor**"; 
text.replace(/\*+/g, "<input type='text'></input>"); 

我還沒有找到獲取剩餘的文本的方式來呈現

<span> 
+0

感謝您的建議使用jquery,將工作的例子字符串,而不是「HEL **世界「爲例。 *可以位於字符串的任何位置。 –

回答

1

你不使用replace函數的結果。試試這個:

var text = "*hel** wor*d*"; 
 
var element = text.split(/\s*\*+\s*/g); 
 
element = "<span>"+ element.join("</span><input type='text'><span>") + "</span>"; 
 
element = element.replace(/<span><\/span>/g, ""); 
 

 
console.log(element);

+0

感謝您的回答,我編輯了這個問題來澄清一些觀點。 –

+0

@AlexTakitani這個答案只是在第二個替換參數時丟失了一個「」,在工作結束時丟失了一個+「」 –

+0

@AlexTakitani對不起,您對。現在它應該工作:) –

1
'hello wor**'.replace(/\*+/g, "<input type='text'></input>"); 

這將返回hello wor。所有你需要做的就是將字符串你想要的數據,像這樣的休息:

var text = "hello wor**"; 
text = '<span>' + text.replace(/\*+/g, '') + '</span><input type=\'text\'></input>'; 
+0

感謝您的回答,我編輯了這個問題來澄清一些觀點。 –

0
<html> 
    <head> 
    </head> 
    <body> 
    <span id="hi">hello wor**</span> 
    </body> 
</html> 

我在這個

$(document).ready(function() { 
     var texty = $('#hi').text(); 

     $('#hi').replaceWith(texty.replace(/\*+/g, "<input type='text'></input>")) 
    }); 
+0

感謝您的回答,我編輯了這個問題以澄清一些觀點。 –