66

私はこれをしばらく探していましたが、スペースをダッシュ​​ (ハイフン) に変更するための多くの応答を見つけましたが、他の方向に進むものは見つかりませんでした.

最初に私は持っています:

var str = "This-is-a-news-item-";

私はそれを次のものに置き換えようとします:

str.replace("-", ' ');

そして、単純に結果を表示します:

alert(str);

今のところ、何もしないので、どこを向いたらよいかわかりません。スペースをダッシュ​​に置き換える既存のもののいくつかを逆にしようとしましたが、それも機能しません。

助けてくれてありがとう。

4

8 に答える 8

168

これはそれを修正します:

let str = "This-is-a-news-item-";
str = str.replace(/-/g, ' ');
alert(str);

コードには2つの問題がありました。

  1. まず、String.replace()は文字列自体を変更せず、変更された文字列を返します。
  2. 次に、文字列をreplace関数に渡すと、最初に検出されたインスタンスのみが置き換えられます。そのため、すべてのインスタンスが置き換えられるように、「グローバル」のフラグを使用して正規表現を渡しました。g
于 2013-01-10T16:41:43.383 に答える
8

replace()新しい文字列を返し、元の文字列は変更されません。あなたがする必要があります

str = str.replace(/-/g, ' ');
于 2013-01-10T16:38:26.353 に答える
6

私はあなたが直面している問題はほとんどこれだと思います:-

str = str.replace("-", ' ');

str反映された変更を確認するには、置換の結果をに再割り当てする必要があります。

MSDN Javascriptリファレンスから:-

replaceメソッドの結果は、指定された置換が行われた後のstringObjのコピーです。

すべてを置き換えるには、修飾子を正規表現パラメーターと一緒-に使用する必要があります。/g

str = str.replace(/-/g, ' ');
于 2013-01-10T16:37:38.677 に答える
2

すでに与えられた答えに加えて、おそらくすべての出現を置き換えたいと思うでしょう。これを行うには、次のような正規表現が必要になります。

str = str.replace(/-/g, ' ');  // Replace all '-'  with ' '
于 2013-01-10T16:42:06.863 に答える
2
var str = "This-is-a-news-item-";
while (str.contains("-")) {
  str = str.replace("-", ' ');
}
alert(str);

str.replace() を 1 回使用すると、最初のハイフンのみが置き換えられることがわかったので、入力文字列にまだハイフンが含まれている間にループして、それらをすべて置き換えました。

http://jsfiddle.net/LGCYF/

于 2013-01-10T16:40:30.980 に答える
1

replaceAll()と組み合わせて使用​​するとtrim()、ニーズを満たす場合があります。

const str = '-This-is-a-news-item-';
console.log(str.replaceAll('-', ' ').trim());

于 2021-03-19T07:53:03.653 に答える