Programing

문자열로 단어를 대문자로

lottogame 2020. 6. 4. 07:49
반응형

문자열로 단어를 대문자로


문자열에서 단어를 대문자로 사용하는 가장 좋은 방법은 무엇입니까?


String.prototype.capitalize = function() {
    return this.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};

용법:

'your string'.capitalize(); // -> 'Your String'

  • 앞에 공백이있는 첫 글자는 대문자가 아닌 Marco Demaio 의 솔루션을 수정 합니다.

    ' javascript'.capitalize(); // -> ' Javascript'
    
  • 국가 상징과 악센트 문자를 처리 할 수 ​​있습니다.

    'бабушка курит трубку'.capitalize();  // -> 'Бабушка Курит Трубку'
    'località àtilacol'.capitalize()      // -> 'Località Àtilacol'
    

추가 기능 이 유용하다고 생각합니다

String.prototype.capitalize = function(lower) {
    return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};
'javaSCrIPT'.capitalize();      // -> 'JavaSCrIPT'
'javaSCrIPT'.capitalize(true);  // -> 'Javascript'

문자열 내에서 단어를 대문자로 사용하는 가장 짧은 구현은 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'

정규식은 기본적으로 주어진 문자열 내에서 각 단어의 첫 글자와 일치하며 해당 글자 만 대문자로 변환합니다.

  • \ b 는 단어 경계 (단어의 시작 또는 끝)와 일치합니다.
  • \ w 는 다음 메타 문자 [a-zA-Z0-9]와 일치합니다.

비 ASCII 문자의 경우이 솔루션을 대신 참조하십시오.

'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())

이 정규 표현식은 첫 번째 문자와 공백이 아닌 모든 문자 앞에 주어진 문자열 내에서 공백을 일치시키고 해당 문자 만 대문자로 변환합니다.

  • \ s 는 공백 문자와 일치
  • \ S 는 공백이 아닌 문자와 일치
  • (x | y) 는 지정된 대안과 일치합니다.

캡처하지 않은 그룹은 여기에서 다음과 같이 사용할 수 /(?:^|\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


자바 스크립트 및 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


당신이 사용하는 경우 lodash를 자바 스크립트 응용 프로그램에서, 당신은 사용할 수 있습니다 _.capitalize를 :

console.log( _.capitalize('ÿöur striñg') );
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>


간결한 ES6 방식은 다음과 같습니다.

const capitalizeFirstLetter = s => s.charAt(0).toUpperCase() + s.slice(1)

This only uppercases the first letter and doesn't affect the rest of the sentence's casing.


My solution:

String.prototype.toCapital = function () {
    return this.toLowerCase().split(' ').map(function (i) {
        if (i.length > 2) {
            return i.charAt(0).toUpperCase() + i.substr(1);
        } else {
            return i;
        }
    }).join(' ');
};

Example:

'álL riGht'.toCapital();
// Returns 'Áll Right'

This should cover most basic use cases.

const capitalize = (str) => {
    if (typeof str !== 'string') {
      throw Error('Feed me string')
    } else if (!str) {
      return ''
    } else {
      return str
        .split(' ')
        .map(s => {
            if (s.length == 1 ) {
                return s.toUpperCase()
            } else {
                const firstLetter = s.split('')[0].toUpperCase()
                const restOfStr = s.substr(1, s.length).toLowerCase()
                return firstLetter + restOfStr
            }     
        })
        .join(' ')
    }
}


capitalize('THIS IS A BOOK') // => This Is A Book
capitalize('this is a book') // => This Is A Book
capitalize('a 2nd 5 hour boOk thIs weEk') // => A 2nd 5 Hour Book This Week

Edit: Improved readability of mapping.


Ivo's answer is good, but I prefer to not match on \w because there's no need to capitalize 0-9 and A-Z. We can ignore those and only match on a-z.

'your string'.replace(/\b[a-z]/g, match => match.toUpperCase())
// => 'Your String'

It's the same output, but I think clearer in terms of self-documenting code.


http://www.mediacollege.com/internet/javascript/text/case-capitalize.html is one of many answers out there.

Google can be all you need for such problems.

A naïve approach would be to split the string by whitespace, capitalize the first letter of each element of the resulting array and join it back together. This leaves existing capitalization alone (e.g. HTML stays HTML and doesn't become something silly like Html). If you don't want that affect, turn the entire string into lowercase before splitting it up.


This code capitalize words after dot:

function capitalizeAfterPeriod(input) { 
    var text = '';
    var str = $(input).val();
    text = convert(str.toLowerCase().split('. ')).join('. ');
    var textoFormatado = convert(text.split('.')).join('.');
    $(input).val(textoFormatado);
}

function convert(str) {
   for(var i = 0; i < str.length; i++){
      str[i] = str[i].split('');
      if (str[i][0] !== undefined) {
         str[i][0] = str[i][0].toUpperCase();
      }
      str[i] = str[i].join('');
   }
   return str;
}

I like to go with easy process. First Change string into Array for easy iterating, then using map function change each word as you want it to be.

function capitalizeCase(str) {
    var arr = str.split(' ');
    var t;
    var newt;
    var newarr = arr.map(function(d){
        t = d.split('');
        newt = t.map(function(d, i){
                  if(i === 0) {
                     return d.toUpperCase();
                    }
                 return d.toLowerCase();
               });
        return newt.join('');
      });
    var s = newarr.join(' ');
    return s;
  }

Jquery or Javascipt doesn't provide a built-in method to achieve this.

CSS test transform (text-transform:capitalize;) doesn't really capitalize the string's data but shows a capitalized rendering on the screen.

If you are looking for a more legit way of achieving this in the data level using plain vanillaJS, use this solution =>

var capitalizeString = function (word) {    
    word = word.toLowerCase();
    if (word.indexOf(" ") != -1) { // passed param contains 1 + words
        word = word.replace(/\s/g, "--");
        var result = $.camelCase("-" + word);
        return result.replace(/-/g, " ");
    } else {
    return $.camelCase("-" + word);
    }
}

Use This:

String.prototype.toTitleCase = function() {
  return this.charAt(0).toUpperCase() + this.slice(1);
}

let str = 'text';
document.querySelector('#demo').innerText = str.toTitleCase();
<div class = "app">
  <p id = "demo"></p>
</div>


You can use the following to capitalize words in a string:

function capitalizeAll(str){

    var partes = str.split(' ');

    var nuevoStr = ""; 

    for(i=0; i<partes.length; i++){
    nuevoStr += " "+partes[i].toLowerCase().replace(/\b\w/g, l => l.toUpperCase()).trim(); 
    }    

    return nuevoStr;

}

This solution dose not use regex, supports accented characters and also supported by almost every browser.

function capitalizeIt(str) {
    if (str && typeof(str) === "string") {
        str = str.split(" ");    
        for (var i = 0, x = str.length; i < x; i++) {
            if (str[i]) {
                str[i] = str[i][0].toUpperCase() + str[i].substr(1);
            }
        }
        return str.join(" ");
    } else {
        return str;
    }
}    

Usage:

console.log(capitalizeIt('çao 2nd inside Javascript programme'));

Output:

Çao 2nd Inside Javascript Programme

참고URL : https://stackoverflow.com/questions/2332811/capitalize-words-in-string

반응형