Problem
- The word ‘i18n’ is a common abbreviation of ‘internationalization’ in the developer community, used instead of typing the whole word and trying to spell it correctly.
- ‘i18n’이라는 단어는 개발자 커뮤니티에서 ‘internationalization’의 약어로 사용된다.
- Similarly, ‘a11y’ is an abbreviation of ‘accessibility’.
- 마찬가지로 ‘a11y’는 ‘accessibility’의 약어이다.
- Write a function that takes a string and turns any and all ‘words’ within that string of length 4 or greater into an abbreviation, following these rules:
- 다음 규칙에 따라 길이가 4 이상인 문자열 내 ‘words’를 약어로 전환하는 함수를 작성한다.
- A ‘word’ is a sequence of alphabetical characters.
- By this definition, any other character like a space or hyphen will split up a series of letters into two words.
- 이 정의에 따라 공백(space)이나 하이픈(hyphen) 같은 다른 문자는 일련의 문자를 두 단어로 나눈다.
- The abbreviated version of the word should have the first letter, than the number of removed characters, then the last letter.
- 단어의 약어 버전은 첫 글자, 제거된 글자 수, 마지막 글자가 있어야 한다.
Solution 01
function abbreviate(str) {
return str.replace(/[a-zA-Z]{4,}/g, function(i) {
return i[0] + (i.length - 2) + i.slice(-1);
});
}
abbreviate('internationalization'); // i18n
abbreviate('accessibility'); // a11y
abbreviate('Accessibility'); // A11y
abbreviate('Elephant-rides are really fun!'); // E6t-r3s are r4y
Solution 02
function abbreviate(str) {
return str.replace(/[a-z]{4,}/gi, function(i) {
return i[0] + (i.length - 2) + i.slice(-1);
});
}
abbreviate('internationalization'); // i18n
abbreviate('accessibility'); // a11y
abbreviate('Accessibility'); // A11y
abbreviate('Elephant-rides are really fun!'); // E6t-r3s are r4y
Solution 03
function abbreviate(str) {
return str.replace(/\w{4,}/g, function(i) {
return i[0] + (i.length - 2) + i.slice(-1);
});
}
abbreviate('internationalization'); // i18n
abbreviate('accessibility'); // a11y
abbreviate('Accessibility'); // A11y
abbreviate('Elephant-rides are really fun!'); // E6t-r3s are r4y