공백을 대시로 바꾸고 모든 글자를 소문자로 만드십시오


247

jQuery 또는 vanilla JavaScript를 사용하여 문자열을 다시 포맷해야합니다

우리가 있다고 가정 해 봅시다 "Sonic Free Games".

로 변환하고 싶습니다 "sonic-free-games".

따라서 공백은 대시로 바꾸고 모든 문자를 작은 문자로 변환해야합니다.

이것에 대한 도움이 필요하십니까?

답변:


549

예를 들어 문자열 replacetoLowerCase메소드를 사용하십시오 .

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

g플래그를 RegExp확인하면 문자열 내에서 전체적으로 교체가 이루어지며, 사용되지 않는 경우 첫 번째 항목 만 교체되며 RegExp하나 이상의 공백 문자와 일치합니다.


52
내가 찾은 변형은 영숫자가 아닌 문자를 나타내는 \ W를 사용합니다. 이것은 'ap-grocery'가 될 'A & P Grocery'와 같은 것에 유용합니다. str.replace(/\W+/g, '-').toLowerCase();
Adam Waselnuk

1
, 정규 표현식 부분을 인용하지 즉 마음 replace(/\s+/g, ..하지 replace('/\s+/f', .. (따옴표없이)
아틸라 Fulop

문자열의 시작과 끝에서 공백을 제거하려면 어떻게합니까?
Romel Indemne

@RomelIndemne 요즘에는 다음 String.prototype.trim방법을 사용할 수 있습니다 .str.trim().replace(/\s+/g, '-').toLowerCase()
CMS

고마워요 이제 xD JK와 다른 방법이 필요합니다
lawphotog

34

위의 답변은 약간 혼란 스러울 수 있습니다. 문자열 메서드는 원본 객체를 수정 하지 않습니다 . 그들은 새로운 물건을 돌려줍니다 . 다음과 같아야합니다.

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

10
이 개념을 통합하기 위해 허용 된 답변이 편집되었다는 점에 유의하는 것이 중요합니다.
Dexygen

31

당신은 또한 사용할 수 있습니다 splitjoin:

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

예를 들어 공간이 처음에있는 경우와 같은 사이드 케이스를 교체하십시오.
Bonjour123 21

1

CMS의 대답은 잘이다,하지만 난 당신이 패키지를 사용할 수 있음을 노트에 원하는 @ : https://github.com/sindresorhus/slugify , 당신과 커버 많은 가장자리의 경우 (즉, 독일어 움라우트, 베트남어, 아랍어를 수행 , 러시아어, 루마니아어, 터키어 등).


0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.