0

テキストボックスがあり、ユーザーがスペースを押すと、個々の単語の前に#を付けたいと思います。

これまでのところ、私が持っているコードは次のとおりです。

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

#が最初に付加される(wordになる#word)ので、部分的に機能します。

ただし、別の単語を入力した場合は、テキストボックスの先頭に#が追加され、ユーザーが独自の#を入力した場合は別の#も追加されます。

これらの2つの問題をどのように解決できますか?

ありがとう

4

2 に答える 2

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#"
于 2012-11-18T07:23:26.427 に答える
0

私はこのようなものがうまくいくと想像します:

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

これは基本的に、後ろにアフターがないスペース(および文字列の先頭)を検索し#、それを挿入し#ます。

于 2012-11-17T01:40:16.303 に答える