[javascript] 문자열에서 단어를 대문자로
문자열에서 단어를 대문자로 사용하는 가장 좋은 방법은 무엇입니까?
답변
/**
* Capitalizes first letters of words in string.
* @param {string} str String to be modified
* @param {boolean=false} lower Whether all other letters should be lowercased
* @return {string}
* @usage
* capitalize('fix this string'); // -> 'Fix This String'
* capitalize('javaSCrIPT'); // -> 'JavaSCrIPT'
* capitalize('javaSCrIPT', true); // -> 'Javascript'
*/
const capitalize = (str, lower = false) =>
(lower ? str.toLowerCase() : str).replace(/(?:^|\s|["'([{])+\S/g, match => match.toUpperCase());
;
- 앞에 공백이있는 첫 글자는 대문자가 아닌 Marco Demaio 의 솔루션을 수정 합니다.
capitalize(' javascript'); // -> ' Javascript'
- 국가 상징과 악센트 문자를 처리 할 수 있습니다.
capitalize('бабушка курит трубку'); // -> 'Бабушка Курит Трубку'
capitalize('località àtilacol') // -> 'Località Àtilacol'
- 따옴표와 중괄호를 처리 할 수 있습니다.
capitalize(`"quotes" 'and' (braces) {braces} [braces]`); // -> "Quotes" 'And' (Braces) {Braces} [Braces]
답변
문자열 내에서 단어를 대문자로 사용하는 가장 짧은 구현은 ES6의 화살표 함수를 사용하는 다음과 같습니다.
'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'
ES5 호환 구현 :
'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'
정규식은 기본적으로 주어진 문자열 내에서 각 단어의 첫 글자와 일치하며 해당 글자 만 대문자로 변환합니다.
비 ASCII 문자의 경우이 솔루션을 대신 참조하십시오.
'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())
이 정규 표현식은 첫 번째 문자와 공백이 아닌 모든 문자 앞에 주어진 문자열 내에서 공백을 일치시키고 해당 문자 만 대문자로 변환합니다.
캡처하지 않은 그룹은 여기에서 다음과 같이 사용될 수 있습니다. /(?:^|\s)\S/g
하지만 g
정규식 내의 플래그는 설계 상 하위 그룹을 캡처하지 않습니다.
건배!
답변
function capitalize(s){
return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
};
capitalize('this IS THE wOrst string eVeR');
출력 : “이것은 최악의 문자열입니다”
최신 정보:
이 솔루션이 내 솔루션을 대체하는 것으로 보입니다 : https://stackoverflow.com/a/7592235/104380
답변
VSYNC가 제공하는 대답은 작동 만큼 당신이 편지를 강조하지 않는 입력 문자열을.
이유를 모르지만 분명히 \b
정규 표현식 일치 문자가 악센트 문자 (IE8 및 Chrome에서 테스트 됨)와 같이 문자열 "località"
이 잘못 대문자로 변환됩니다"LocalitÀ"
( à
문자가 대문자로 표시되어 정규 표현식이 단어 경계라고 생각합니다)
악센트 문자와 함께 작동 하는보다 일반적인 기능 은 다음 과 같습니다.
String.prototype.toCapitalize = function()
{
return this.toLowerCase().replace(/^.|\s\S/g, function(a) { return a.toUpperCase(); });
}
다음과 같이 사용할 수 있습니다.
alert( "hello località".toCapitalize() );
답변
모든 사람이 요청한 JavaScript 답변을 제공 했으므로 CSS 속성 text-transform: capitalize
이 정확히이 작업을 수행합니다.
나는 이것이 당신이 요구하는 것이 아닐 수도 있다는 것을 알고 있습니다 -당신은 우리에게 당신이 이것을 실행하는 어떤 맥락도주지 않았습니다-그러나 그것이 단지 프레젠테이션을위한 것이라면, CSS 대안으로 확실히 갈 것입니다.
답변
jQuery fame의 John Resig는 John Gruber가 작성한 perl 스크립트를 JavaScript로 이식했습니다. 이 스크립트는보다 지능적인 방식으로 대문자를 사용하며 ‘of’및 ‘and’와 같은 작은 단어는 대문자로 표시하지 않습니다.
여기에서 찾을 수 있습니다 : JavaScript에서 Title Capitalization
답변
JavaScript 및 HTML 사용
String.prototype.capitalize = function() {
return this.replace(/(^|\s)([a-z])/g, function(m, p1, p2) {
return p1 + p2.toUpperCase();
});
};
<form name="form1" method="post">
<input name="instring" type="text" value="this is the text string" size="30">
<input type="button" name="Capitalize" value="Capitalize >>" onclick="form1.outstring.value=form1.instring.value.capitalize();">
<input name="outstring" type="text" value="" size="30">
</form>
기본적으로 할 수 string.capitalize()
있으며 각 단어의 첫 글자마다 대문자를 사용합니다.
출처 : http://www.mediacollege.com/internet/javascript/text/case-capitalize.html