Answers:
只需使用String replace
和toLowerCase
方法,例如:
var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase();
console.log(str); // "sonic-free-games"
请注意,g
上的标志RegExp
,它将在字符串中全局进行替换,如果不使用它,则将仅替换第一个匹配项,并且RegExp
将匹配一个或多个空格字符。
replace(/\s+/g, ..
与不 replace('/\s+/f', ..
(不撇号)
String.prototype.trim
方法:str.trim().replace(/\s+/g, '-').toLowerCase()
以上答案可以认为有点令人困惑。字符串方法不修改原始对象。他们返回新对象。肯定是:
var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str
您还可以使用split
和join
:
"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games
@CMS的答案很好,但我想指出的是,您可以使用此软件包:https : //github.com/sindresorhus/slugify,它可以为您解决这个问题,并涵盖了许多极端情况(例如,德国变音符号,越南语,阿拉伯语) ,俄语,罗马尼亚语,土耳其语等)。
str.replace(/\W+/g, '-').toLowerCase();