用破折号替换空格,并使所有字母小写

我需要使用jQuery或香草JavaScript重新格式化字符串

假设我们有"Sonic Free Games"

我想把它转换为"sonic-free-games"

因此,空格应该被破折号取代,所有字母都应该转换为小写字母。

有人帮忙吗?

283545 次浏览

只需使用String replacetoLowerCase方法,例如:

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase();
console.log(str); // "sonic-free-games"

注意RegExp上的g标志,它将在字符串中替换在全球范围内,如果没有使用它,只会替换第一个出现的字符,并且,RegExp将匹配一个或多个空白字符。

上面的答案可以被认为是有点混乱。 字符串方法不是修改原始对象。他们返回新对象。 它必须是:

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str

你也可以使用splitjoin:

"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games

var str = "Tatwerat Development Team";
str = str.replace(/\s+/g, '-');
console.log(str);
console.log(str.toLowerCase())

@CMS的答案很好,但我想指出的是,你可以使用这个包:https://github.com/sindresorhus/slugify,它为你做了这件事,涵盖了许多边缘情况(即,德语变音,越南语,阿拉伯语,俄语,罗马尼亚语,土耳其语等)。

一种非常直接的方法是使用JavaScript String replaceAll()方法。

"Sonic Free Games".replaceAll(' ', '-').toLowerCase(); //sonic-free-games

对于这样的简单替换,正则表达式通常是多余的。

这样更简单,可读性更强。

然而,如果你仍然需要一个正则表达式,你也可以用这个方法使用它们。有关示例,请参阅moz文档

如果你需要IE支持,你需要一个polyfill。

如果你的项目中有lodash,你可以尝试kebabCase

_.kebabCase('Sonic Free Games')

https://lodash.com/docs/4.17.15#kebabCase