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

IT技术 javascript string replace
2021-02-19 15:48:20

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

假设我们有"Sonic Free Games".

我想将其转换为"sonic-free-games".

因此,空格应替换为破折号,并将所有字母转换为小写字母。

请对此有任何帮助吗?

6个回答

只需使用 StringreplacetoLowerCase方法,例如:

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

注意 上的g标志RegExp,它将在字符串中全局替换,如果不使用它,则仅替换第一次出现,并且RegExp将匹配一个或多个空白字符。

如果我想删除字符串开头和结尾的空格怎么办?
2021-05-13 15:48:20
注意不要引用正则表达式部分,即replace(/\s+/g, ..不是 replace('/\s+/f', ..(没有撇号)
2021-05-16 15:48:20
我想出的一个变体使用 \W 表示任何非字母数字字符。这对于像“A&P Grocery”这样会变成“ap-grocery”的东西很有用。str.replace(/\W+/g, '-').toLowerCase();
2021-05-18 15:48:20
谢谢,不错的。现在我需要另一种方式来解决 xD JK
2021-05-18 15:48:20
@RomelIndemne 现在您可以使用该String.prototype.trim方法:str.trim().replace(/\s+/g, '-').toLowerCase()
2021-05-20 15:48:20

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

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str
我认为重要的是要注意已接受的答案已被编辑以包含此概念
2021-05-09 15:48:20

您还可以使用splitjoin

"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games
请注意边际情况,例如开头的一些空间,它们不会被替换
2021-05-05 15:48:20
这不是真的,以这个为例 " Sonic Free Games".split(" ").join("-").toLowerCase();
2021-05-17 15:48:20

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

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

_.kebabCase('Sonic Free Games')

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