字符串替换逻辑

时间:2017-05-31 16:29:53

标签: javascript regex

我正在尝试构建一个函数,它接收一个具有以下格式的字符串:

“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>

3 个答案:

答案 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>"))
    });