javascript - 用空格替换破折号(连字符)

CMI*_*VXX 52 javascript regex

我一直在寻找这个问题,虽然我已经找到了许多将空间变成破折号(连字符)的响应,但我还没有发现任何朝向另一个方向的反应.

最初我有:

var str = "This-is-a-news-item-";
Run Code Online (Sandbox Code Playgroud)

我尝试用以下代替:

str.replace("-", ' ');
Run Code Online (Sandbox Code Playgroud)

并只显示结果:

alert(str);
Run Code Online (Sandbox Code Playgroud)

现在,它没有做任何事情,所以我不知道该转向何方.我尝试颠倒一些用破折号替换空间的现有的,但这也不起作用.

谢谢您的帮助.

Mar*_*ijn 122

这解决了它:

var str = "This-is-a-news-item-";
str = str.replace(/-/g, ' ');
alert(str);
Run Code Online (Sandbox Code Playgroud)

您的代码存在两个问题:

  1. 首先,String.replace()不会更改字符串本身,而是返回更改的字符串.
  2. 其次,如果将字符串传递给replace函数,它将只替换它遇到的第一个实例.这就是为什么我传递带有标志的正则表达式g,为'全局',以便所有实例都将被替换.


Roh*_*ain 6

我认为您面临的问题几乎是这样的:-

str = str.replace("-", ' ');
Run Code Online (Sandbox Code Playgroud)

您需要将替换结果重新分配给str,以查看反映的更改。

来自MSDN Javascript 参考:-

在进行指定的替换后,replace 方法的结果是 stringObj 的副本。

要替换所有-,您需要使用/g带有正则表达式参数的修饰符:-

str = str.replace(/-/g, ' ');
Run Code Online (Sandbox Code Playgroud)


iag*_*een 5

replace()返回一个新字符串,并且原始字符串未修改。你需要做

str = str.replace(/-/g, ' ');
Run Code Online (Sandbox Code Playgroud)