我正在尝试构建一个函数,它接收一个具有以下格式的字符串:
“hello wor **”
*可以是字符串中的任何位置。
它应该返回:
<span>hello wor</span><input type='text'></input>
所以字符串也可以是“hel ** wor * 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 :(得分: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>';
答案 1 :(得分: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);
答案 2 :(得分:0)
<html>
<head>
</head>
<body>
<span id="hi">hello wor**</span>
</body>
</html>
我在这个
中使用jquery$( document ).ready(function() {
var texty = $('#hi').text();
$('#hi').replaceWith(texty.replace(/\*+/g, "<input type='text'></input>"))
});