Odpowiedzi:
Wystarczy użyć ciągu znaków replace
i toLowerCase
metod, na przykład:
var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase();
console.log(str); // "sonic-free-games"
Zwróć uwagę na g
flagę na RegExp
, spowoduje to zastąpienie globalnie w ciągu, jeśli nie zostanie użyte, tylko pierwsze wystąpienie zostanie zastąpione, a także, które RegExp
będą pasować do jednego lub więcej białych znaków.
replace(/\s+/g, ..
I nie replace('/\s+/f', ..
(bez apostrofów)
String.prototype.trim
metody:str.trim().replace(/\s+/g, '-').toLowerCase()
Powyższa odpowiedź może być nieco myląca. Metody łańcuchowe nie modyfikują oryginalnego obiektu. Oni powrócić nowego obiektu. To musi być:
var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str
Możesz także użyć split
i join
:
"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games
Odpowiedź @ CMS jest w porządku, ale chcę zauważyć, że możesz użyć tego pakietu: https://github.com/sindresorhus/slugify , który robi to za Ciebie i obejmuje wiele przypadków krawędzi (tj. Niemieckie umlauty, wietnamski, arabski , Rosyjski, rumuński, turecki itp.).
var str = "Tatwerat Development Team";
str = str.replace(/\s+/g, '-');
console.log(str);
console.log(str.toLowerCase())
str.replace(/\W+/g, '-').toLowerCase();