나는 웹을 통해 검색했지만 나를 도울 수있는 것이 없다. 변수 내에서 각 단어의 첫 글자를 대문자로 만들고 싶습니다.
지금까지 시도했습니다.
toUpperCase();
그리고 모든 문자를 대문자로 표시하므로 운이 없었습니다.
답변:
단어를 시작하는 소문자를 대문자로 바꾸 려면 .replace[MDN] 기능을 사용하십시오 .
var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
alert(str); //Displays "Hello World"
편집 : az 이외의 단어 문자를 다루는 경우 다음 (더 복잡한) 정규식이 용도에 더 적합 할 수 있습니다.
var str = "петр данилович björn über ñaque αλφα";
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
return letter.toUpperCase();
});
alert(str); //Displays "Петр Данилович Björn Über Ñaque Αλφα"
Björn Lüchinger,이된다 BjöRn LüChinger. 이것에 대한 수정 사항이 있습니까?
str[0].toUpperCase() + str.slice(1)
var first = str.slice(0, str.indexOf(' ')); str = first.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) { return letter.toUpperCase(); }) + str.substr(first.length);특수 문자도 다루기 위해 사용 을 끝냈다 .
훨씬 쉬운 방법 :
$('#test').css('textTransform', 'capitalize');
@Dementic이 나를 올바른 길로 인도 한 것에 대해 공로를 인정해야합니다. 여러분이 제안하는 것보다 훨씬 간단합니다.
text-transform:capitalize모든 대문자에는 영향을주지 않습니다.
http://phpjs.org/functions/ucwords:569 에 좋은 예가 있습니다.
function ucwords (str) {
return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
(간결성을 위해 소스에서 함수 설명을 생략했습니다. 자세한 내용은 링크 된 소스를 참조하십시오)
편집 :이 기능은 (질문 제목이 묻는 것처럼) 문자열의 첫 글자가 아니라 (질문이 묻는대로) 각 단어의 첫 글자를 대문자로 표시합니다.
순수한 자바 스크립트 솔루션을 추가하고 싶었습니다 (JQuery 없음)
function capitalize(str) {
strVal = '';
str = str.split(' ');
for (var chr = 0; chr < str.length; chr++) {
strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
}
return strVal
}
console.log(capitalize('hello world'));
c < str.length;있어야한다chr < str.length;
substring () 및 toUpperCase ()를 사용하여 첫 번째 문자를 꺼내고 대문자로 만든 다음 문자열의 첫 번째 문자를 결과로 바꿀 수 있다고 생각합니다.
myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"
나는 그것이 당신에게 효과가 있다고 생각합니다. 고려해야 할 또 다른 사항은이 데이터가 표시되는 경우 CSS 속성 "text-transform : capitalize"가있는 컨테이너에 클래스를 추가 할 수 있다는 것입니다.
이렇게하려면 사용하려는 경우 Javascript가 실제로 필요하지 않습니다.
$('#test').css('textTransform', 'capitalize');
CSS처럼 이것을하지 않는 이유
#test,h1,h2,h3 { text-transform: capitalize; }
또는 수업으로 수행하고 필요한 곳에 해당 수업을 적용하십시오.
.ucwords { text-transform: capitalize; }
들어 본 적이 substr()있습니까?
우선 :
$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));
[최신 정보:]
팁에 대한 @FelixKling 에게 감사드립니다 .
$("#test").text(function(i, text) {
return text.substr(0,1).toUpperCase() + text.substr(1);
});
text() 네 번 호출하는 대신 함수를 text()다음으로 전달하십시오 .$("#test").text(function(i, text) { return text.substr(0,1).toUpperCase()+text.substr(1);});
$('#test').style.textTransform='capitalize';
$('#test').css('textTransform', 'capitalize'); BTW, 이것이 최고의 답변입니다. 답변으로 제출하겠습니다.
document.getElementById('test').style.textTransform='capitalize';
@ peter-olson의 답변을 바탕으로 jQuery없이보다 객체 지향적 인 접근 방식을 취했습니다.
String.prototype.ucwords = function() {
return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
}
alert("hello world".ucwords()); //Displays "Hello World"
toUpperCaseWords자바 스크립트의 라인에 유지 toUpperCase()하고toLowerCase()
PHP의 ucwords 기능으로이 간단한 코드를 시도해 볼 수 있습니다.
function ucWords(text) {
return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');
대문자는 변경되지 않습니다.
@Dementric의 답변을 완전히 기반으로이 솔루션은 간단한 jQuery 메서드 'ucwords'로 호출 할 준비가되었습니다 ... 여기에 기여한 모든 사람에게 감사드립니다 !!!
$.extend({
ucwords : function(str) {
strVal = '';
str = str.split(' ');
for (var chr = 0; chr < str.length; chr++) {
strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
}
return strVal
}
});
예 : 이것은 메소드를 사용하여 호출 할 수 있습니다.
var string = "this is a test";
string = $.ucwords(string); // Returns "This Is A Test"
첫 글자를 대문자로 바꾸기 전에 낮출 문자열입니다.
(둘 다 Jquery 구문 사용)
function CapitaliseFirstLetter(elementId) {
var txt = $("#" + elementId).val().toLowerCase();
$("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
return $1.toUpperCase(); }));
}
또한 전체 문자열을 대문자로 표시하는 기능 :
function CapitaliseAllText(elementId) {
var txt = $("#" + elementId).val();
$("#" + elementId).val(txt.toUpperCase());
}
텍스트 상자의 클릭 이벤트에 사용할 구문 :
onClick="CapitaliseFirstLetter('TextId'); return false"
이 코드를 사용했습니다-
function ucword(str){
str = str.toLowerCase().replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(replace_latter) {
return replace_latter.toUpperCase();
}); //Can use also /\b[a-z]/g
return str; //First letter capital in each word
}
var uc = ucword("good morning. how are you?");
alert(uc);
HTML :
<input class="capitalize" name="Address" type="text" value="" />
jQuery를 사용한 자바 스크립트 :
$(".capitalize").bind("keyup change", function (e) {
if ($(this).val().length == 1)
$(this).val($(this).val().toUpperCase());
$(this).val($(this).val().toLowerCase().replace(/\s[\p{L}a-z]/g, function (letter) {
return letter.toUpperCase();
}))
});
JQuery없이
String.prototype.ucwords = function() {
str = this.trim();
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(s){
return s.toUpperCase();
});
};
console.log('hello world'.ucwords()); // Display Hello World
다음은 러시아 Засс-Ранцев와 같은 이중 성 및 Honoré de Balzac, d' Artagnan, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd 등과 같은 일부 고귀한 이름을 추가로 존중하는 유니 코드 안전 ucwords () 함수입니다.
String.prototype.ucwords = function() {
return this.toLowerCase()
.replace(/(^|\s|\-)[^\s$]/g, function(m) {
return m.toUpperCase();
})
// French, Arabic and some noble names...
.replace(/\s(Of|De|Van|Von|Ibn|Из|Ван|Фон|Ибн)\s/g, function(m) { // Honoré de Balzac, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd etc.
return m.toLowerCase();
})
.replace(/(^|\s)(D|Д)(['’][^\s$])/g, function(m, p1, p2, p3) { // D'Artagnan or d'Artagnan / Д’Артаньян или д’Артаньян
return p1 + (p1 === "" ? p2/*.toUpperCase()*/ : p2.toLowerCase()) + p3.toUpperCase();
});
}