Javascript替换每个单词

时间:2012-11-17 01:34:54

标签: javascript

我有一个文本框,当用户点击空格时,我希望每个单词都有一个#prepended。

到目前为止,我的代码是:

  tagsNow = document.getElementById("tags").value;
  tagsChanged = tagsNow.replace(/(w+)/, "#$1");
  document.getElementById("tags").value = tagsChanged;

它部分有效,因为#在第一次(word变为#word)时会被添加。

但是,如果键入了另一个单词,则只在文本框的开头添加#,如果用户键入自己的#,它还会添加另一个#。

我怎样才能解决这两个问题?

由于

2 个答案:

答案 0 :(得分:1)

function tagify(str){
  return str.replace(/([^#]+?)(\s+|\b)/g, function(mat, grp1, grp2, at, src){
    return src[at-1] == "#" ? mat : "#" + mat;
  });
}

tagify("japan travel"); // "#japan #travel"
tagify("#torii bird");  // "#torii #bird"
tagify("C C#");         // "#C #C#"

答案 1 :(得分:0)

我会想象这样的事情会起作用:

tagsChanged = tagsNow.replace(/(^| )(?=!#)/g,"$1#");

这基本上会搜索后面没有#的空格(以及字符串的开头),并插入#