2017-05-31 75 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

感谢您的回答,我编辑了这个问题以澄清一些观点。 –