Jak mogę zamienić pierwszą literę każdego wyrazu na wielką literę w ciągu za pomocą JavaScript?


117

Próbuję napisać funkcję, która zamienia pierwszą literę każdego słowa w ciągu na wielką literę (konwertując ciąg na wielkość liter).

Na przykład, kiedy wejście jest "I'm a little tea pot", spodziewam "I'm A Little Tea Pot"się, że będzie wyjściem. Jednak funkcja zwraca "i'm a little tea pot".

To jest mój kod:

function titleCase(str) {
  var splitStr = str.toLowerCase().split(" ");

  for (var i = 0; i < splitStr.length; i++) {
    if (splitStr.length[i] < splitStr.length) {
      splitStr[i].charAt(0).toUpperCase();
    }

    str = splitStr.join(" ");
  }

  return str;
}

console.log(titleCase("I'm a little tea pot"));


To nie wygląda na to, że pierwsza litera samego ciągu jest wielka. A może masz na myśli, że chcesz pisać wielką literą każde słowo zawarte w ciągu.
epascarello

2
Nie przypisujesz swojej kapitalizacji do wyniku, splitStr[i].charAt(0).toUpperCase();to będzie void. Musisz splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
coś

1
Najpierw powinieneś nam powiedzieć. Co jest nie tak z tą funkcją? Jaki jest oczekiwany wynik i co w zamian zwraca?
Sebastian Simon

Wygląda na to, że ta funkcja próbuje użyć dużej litery w każdym słowie.
Halcyon

3
Jak mówi tytuł, próbuję zacząć pisać wielką literę każdego słowa w ciągu. Nie doceniam negatywnych opinii ani negatywnych opinii na forum, które ma mieć charakter wspierający. @somethinghere - Dziękuję za odpowiedź.
slurrr

Odpowiedzi:


166

Nie przypisujesz ponownie zmian do tablicy, więc wszystkie twoje wysiłki są daremne. Spróbuj tego:

function titleCase(str) {
   var splitStr = str.toLowerCase().split(' ');
   for (var i = 0; i < splitStr.length; i++) {
       // You do not need to check if i is larger than splitStr length, as your for does that for you
       // Assign it back to the array
       splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);     
   }
   // Directly return the joined string
   return splitStr.join(' '); 
}

document.write(titleCase("I'm a little tea pot"));


@Halcyon To dałoby jedną literę na każde słowo.
epascarello

15
W es6 możesz to zrobić, co wygląda trochę ładniej:myStr.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.substring(1)).join(' ');
Patrick Michaelsen,

1
@PatrickMichaelsen Rzeczywiście możesz. Nie zmienię jednak odpowiedzi, pochodzi z 2015 roku i wiem, że czasy się zmieniły, ale utrzymam to dla potomności. Poza tym też nie pisałbym tego już w ten sposób :) Ale nie krępuj się opublikować swoją jako własną odpowiedź, jak sądzę?
coś tutaj

1
Tak, zgadzam się, obecna odpowiedź jest w porządku. Dlatego umieściłem to w komentarzach, po prostu w celach informacyjnych dla nowych gości.
Patrick Michaelsen

1
Porównałem tę funkcję z 3 funkcjami konkurencji i stwierdziłem, że jest ona najbardziej wydajna - mniej niż 1/3 czasu wykonania najgorszego konkurenta (Chrome 73). jsben.ch/AkHgP
Michael Thompson

92

Sprawiasz, że złożoność jest bardzo łatwa. Możesz dodać to w swoim CSS:

.capitalize {
    text-transform: capitalize;
}

W JavaScript możesz dodać klasę do elementu

 document.getElementById("element").className = "capitalize";

@epascarello Nie rozumiem cię, co mi mówisz?
Marcos Pérez Gude

pytanie brzmi „Co jest nie tak z tą funkcją?”, w przeciwnym razie byłby to duplikat stackoverflow.com/questions/1026069/… lub stackoverflow.com/questions/196972/…
Hacketo

2
dzięki za odpowiedź, ale próbuję to zrobić używając javascript do ćwiczeń @ MarcosPérezGude
slurrr

1
Tak, jest naprawdę wszechstronny
Marcos Pérez Gude

3
Niestety w niektórych przypadkach, jeśli wartość wynosi 20 mm i używasz dużej litery, będzie to 20 mm. W niektórych przypadkach javascript może być jedyną metodą.
Ale

79

Wersja ECMAScript 6 :

const toTitleCase = (phrase) => {
  return phrase
    .toLowerCase()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
};

let result = toTitleCase('maRy hAd a lIttLe LaMb');
console.log(result);


1
Myślę też, że brakuje ci toLowerCase()na samym początku, na wypadek gdyby użytkownik lub ciąg znaków był mieszany.
ArchNoob

45

Myślę, że ta droga powinna być szybsza; ponieważ nie dzieli łańcucha i nie łączy go ponownie; po prostu używając wyrażenia regularnego.

var str = text.replace(/(^\w{1})|(\s{1}\w{1})/g, match => match.toUpperCase());

Wyjaśnienie :

  1. (^\w{1}): dopasowuje pierwszy znak ciągu
  2. |: lub
  3. (\s{1}\w{1}): dopasuj jeden znak, który pojawił się po jednej spacji
  4. g: dopasuj wszystko
  5. match => match.toUpperCase (): zamień na może przyjąć funkcję, więc; zamień dopasowanie na dopasowanie wielkimi literami

1
O wiele czystsze!
Cliff Hall

Dlaczego \s{1}? Powiedziałbym \s+, że działa nawet z kilkoma spacjami między słowami
Cristian Traìna

W moim przypadku; to dokładnie 1 spacja i tak; powinno działać!
nimeresam

Ciągi znaków są niezmienne. regex będzie się dzielić i łączyć pod maską. Właściwie nie da się tego obejść.
bluegrounds

24

Jeśli możesz korzystać z biblioteki innej firmy, Lodash ma dla Ciebie funkcję pomocniczą.

https://lodash.com/docs/4.17.3#startCase

_.startCase('foo bar');
// => 'Foo Bar'

_.startCase('--foo-bar--');
// => 'Foo Bar'

_.startCase('fooBar');
// => 'Foo Bar'

_.startCase('__FOO_BAR__');
// => 'FOO BAR'
<script src="https://cdn.jsdelivr.net/lodash/4.17.3/lodash.min.js"></script>


19

W ECMAScript 6, jednowierszowa odpowiedź przy użyciu funkcji strzałki:

const captialize = words => words.split(' ').map( w =>  w.substring(0,1).toUpperCase()+ w.substring(1)).join(' ')

3
Miły! Możesz użyć go, w[0]aby uczynić go jeszcze krótszym .. W przeciwieństwie do wyrażenia regularnego można go łatwo rozszerzyć o DOWOLNY symbol, ale nie tylko space. Przez dowolne mam na myśli ( [ ", ponieważ litery również powinny być pisane wielką literą po tych symbolach. Więc dziękuję za twoje rozwiązanie!
System Reboot

17

Shortest One Liner (również bardzo szybki):

 text.replace(/(^\w|\s\w)/g, m => m.toUpperCase());

Wyjaśnienie:

  • ^\w : pierwszy znak ciągu
  • | : lub
  • \s\w : pierwszy znak po spacji
  • (^\w|\s\w) Uchwyć wzór.
  • g Flaga: dopasuj wszystkie wystąpienia.

Jeśli chcesz się upewnić, że reszta jest zapisana małymi literami:

text.replace(/(^\w|\s\w)(\S*)/g, (_,m1,m2) => m1.toUpperCase()+m2.toLowerCase())

To jest super! RegEx są najlepsze. Czy możesz szerzej wyjaśnić, co robi ta część? m => m.toUpperCase()
marcin2x4

1
@ marcin2x4 mdopasowuje pierwszy znak, więc pierwsza litera jest wielka.
kurczaki

12

Wersja ECMAScript 6 :

title
    .split(/ /g).map(word =>
        `${word.substring(0,1).toUpperCase()}${word.substring(1)}`)
    .join(" ");

6
Widziałem to dopiero teraz i jest całkiem fajne, ale myślę, że musisz dołączyć, używając " "zamiast "", w przeciwnym razie otrzymasz jedno duże słowo, nie?
coś tutaj

9

𝗙𝗮𝘀𝘁𝗲𝘀𝘁 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻 𝗙𝗼𝗿 𝗟𝗮𝘁𝗶𝗻-𝗜 𝗖𝗵𝗮𝗿𝗮𝗰𝘁𝗲𝗿𝘀

Możesz po prostu użyć funkcji wyrażenia regularnego, aby zmienić wielkość każdej litery. Dzięki optymalizacjom V8 JIST powinno to być szybkie i wydajne pod względem pamięci.

// Only works on Latin-I strings
'tHe VeRy LOOong StRINg'.replace(/\b[a-z]|['_][a-z]|\B[A-Z]/g, function(x){return x[0]==="'"||x[0]==="_"?x:String.fromCharCode(x.charCodeAt(0)^32)})

Lub jako funkcja:

// Only works for Latin-I strings
var fromCharCode = String.fromCharCode;
var firstLetterOfWordRegExp = /\b[a-z]|['_][a-z]|\B[A-Z]/g;
function toLatin1UpperCase(x){ // avoid frequent anonymous inline functions
    var charCode = x.charCodeAt(0);
    return charCode===39 ? x : fromCharCode(charCode^32);
}
function titleCase(string){
    return string.replace(firstLetterOfWordRegExp, toLatin1UpperCase);
}

Według tego benchmarku kod jest o ponad 33% szybszy niż następne najlepsze rozwiązanie w Chrome.


𝗗𝗲𝗺𝗼

<textarea id="input" type="text">I'm a little tea pot</textarea><br /><br />
<textarea id="output" type="text" readonly=""></textarea>
<script>
(function(){
    "use strict"
    var fromCode = String.fromCharCode;
    function upper(x){return x[0]==="'"?x:fromCode(x.charCodeAt(0) ^ 32)}
    (input.oninput = function(){
      output.value = input.value.replace(/\b[a-z]|['_][a-z]|\B[A-Z]/g, upper);
    })();
})();
</script>


Zapomniałeś dodać powrót do swojej funkcji, tak jak w: function autoCaps (string) {return string.replace (/ \ b [az] | \ B [AZ] / g, function (x) {return String.fromCharCode (x.charCodeAt (0) ^ 32);}); }
Archy

@Archy Dziękuję za twoją korektę. Dokonałem proponowanej zmiany.
Jack Giffin


6

Również dobra opcja (szczególnie jeśli używasz freeCodeCamp ):

function titleCase(str) {
  var wordsArray = str.toLowerCase().split(/\s+/);
  var upperCased = wordsArray.map(function(word) {
    return word.charAt(0).toUpperCase() + word.substr(1);
  });
  return upperCased.join(" ");
}

5

Ta procedura obsługuje wyrazy z łącznikami i słowa z apostrofem.

function titleCase(txt) {
    var firstLtr = 0;
    for (var i = 0;i < text.length;i++) {
        if (i == 0 &&/[a-zA-Z]/.test(text.charAt(i)))
            firstLtr = 2;
        if (firstLtr == 0 &&/[a-zA-Z]/.test(text.charAt(i)))
            firstLtr = 2;
        if (firstLtr == 1 &&/[^a-zA-Z]/.test(text.charAt(i))){
            if (text.charAt(i) == "'") {
                if (i + 2 == text.length &&/[a-zA-Z]/.test(text.charAt(i + 1)))
                    firstLtr = 3;
                else if (i + 2 < text.length &&/[^a-zA-Z]/.test(text.charAt(i + 2)))
                    firstLtr = 3;
            }
        if (firstLtr == 3)
            firstLtr = 1;
        else
            firstLtr = 0;
        }
        if (firstLtr == 2) {
            firstLtr = 1;
            text = text.substr(0, i) + text.charAt(i).toUpperCase() + text.substr(i + 1);
        }
        else {
            text = text.substr(0, i) + text.charAt(i).toLowerCase() + text.substr(i + 1);
        }
    }
}

titleCase("pAt o'Neil's");
// returns "Pat O'Neil's";

4
function LetterCapitalize(str) { 
  return str.split(" ").map(item=>item.substring(0,1).toUpperCase()+item.substring(1)).join(" ")
}

4

let cap = (str) => {
  let arr = str.split(' ');
  arr.forEach(function(item, index) {
    arr[index] = item.replace(item[0], item[0].toUpperCase());
  });

  return arr.join(' ');
};

console.log(cap("I'm a little tea pot"));

Wersja do szybkiego odczytu, patrz test porównawczy http://jsben.ch/k3JVz enter image description here


4

Składnia ES6

const captilizeAllWords = (sentence) => {
  if (typeof sentence !== "string") return sentence;
  return sentence.split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
}


captilizeAllWords('Something is going on here')

Czy nie należy zastąpić słowa word.slice (1) słowem word.slice (1) .toLowerCase (), aby reszta nie była pisana wielkimi literami (na wypadek gdyby było to w oryginalnym zdaniu)?
Anton Krug,

4

Możesz używać nowoczesnej składni JS, która może znacznie ułatwić Ci życie. Oto mój fragment kodu dla danego problemu:

const capitalizeString = string => string.split(' ').map(item => item.replace(item.charAt(0), item.charAt(0).toUpperCase())).join(' ');
capitalizeString('Hi! i am aditya shrivastwa')


3

Zwykle wolę nie używać wyrażeń regularnych ze względu na czytelność, a także staram się trzymać z daleka od pętli. Myślę, że to jest czytelne.

function capitalizeFirstLetter(string) {
    return string && string.charAt(0).toUpperCase() + string.substring(1);
};

3

Poniższa funkcja nie zmienia żadnej innej części ciągu niż próba konwersjiwszystkich pierwszych liter wszystkich słów (tj. Zgodnie z definicją wyrażenia regularnego \w+ ) na wielkie litery.

Oznacza to, że to jednak nie koniecznie konwersji słów Titlecase, ale robi dokładnie to, co tytuł pytanie mówi: „wielką literą każdego wyrazu w ciągu znaków - JavaScript”

  • Nie dziel łańcucha
  • określ każde słowo za pomocą wyrażenia regularnego, \w+które jest równoważne[A-Za-z0-9_]+
    • zastosuj funkcję String.prototype.toUpperCase()tylko do pierwszego znaku każdego słowa.
function first_char_to_uppercase(argument) {
  return argument.replace(/\w+/g, function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1);
  });
}

Przykłady:

first_char_to_uppercase("I'm a little tea pot");
// "I'M A Little Tea Pot"
// This may look wrong to you, but was the intended result for me
// You may wanna extend the regex to get the result you desire, e.g., /[\w']+/

first_char_to_uppercase("maRy hAd a lIttLe LaMb");
// "MaRy HAd A LIttLe LaMb"
// Again, it does not convert words to Titlecase

first_char_to_uppercase(
  "ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples"
);
// "ExampleX: CamelCase/UPPERCASE&Lowercase,ExampleY:N0=Apples"

first_char_to_uppercase("…n1=orangesFromSPAIN&&n2!='a sub-string inside'");
// "…N1=OrangesFromSPAIN&&N2!='A Sub-String Inside'"

first_char_to_uppercase("snake_case_example_.Train-case-example…");
// "Snake_case_example_.Train-Case-Example…"
// Note that underscore _ is part of the RegEx \w+

first_char_to_uppercase(
  "Capitalize First Letter of each word in a String - JavaScript"
);
// "Capitalize First Letter Of Each Word In A String - JavaScript"

Edytuj 2019-02-07: Jeśli chcesz rzeczywistą literę tytułu (tj. Tylko pierwsza wielka litera, wszystkie pozostałe małe):

function titlecase_all_words(argument) {
  return argument.replace(/\w+/g, function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
  });
}

Przykłady pokazujące oba:

test_phrases = [
  "I'm a little tea pot",
  "maRy hAd a lIttLe LaMb",
  "ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples",
  "…n1=orangesFromSPAIN&&n2!='a sub-string inside'",
  "snake_case_example_.Train-case-example…",
  "Capitalize First Letter of each word in a String - JavaScript"
];
for (el in test_phrases) {
  let phrase = test_phrases[el];
  console.log(
    phrase,
    "<- input phrase\n",
    first_char_to_uppercase(phrase),
    "<- first_char_to_uppercase\n",
    titlecase_all_words(phrase),
    "<- titlecase_all_words\n "
  );
}

// I'm a little tea pot <- input phrase
// I'M A Little Tea Pot <- first_char_to_uppercase
// I'M A Little Tea Pot <- titlecase_all_words

// maRy hAd a lIttLe LaMb <- input phrase
// MaRy HAd A LIttLe LaMb <- first_char_to_uppercase
// Mary Had A Little Lamb <- titlecase_all_words

// ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples <- input phrase
// ExampleX: CamelCase/UPPERCASE&Lowercase,ExampleY:N0=Apples <- first_char_to_uppercase
// Examplex: Camelcase/Uppercase&Lowercase,Exampley:N0=Apples <- titlecase_all_words

// …n1=orangesFromSPAIN&&n2!='a sub-string inside' <- input phrase
// …N1=OrangesFromSPAIN&&N2!='A Sub-String Inside' <- first_char_to_uppercase
// …N1=Orangesfromspain&&N2!='A Sub-String Inside' <- titlecase_all_words

// snake_case_example_.Train-case-example… <- input phrase
// Snake_case_example_.Train-Case-Example… <- first_char_to_uppercase
// Snake_case_example_.Train-Case-Example… <- titlecase_all_words

// Capitalize First Letter of each word in a String - JavaScript <- input phrase
// Capitalize First Letter Of Each Word In A String - JavaScript <- first_char_to_uppercase
// Capitalize First Letter Of Each Word In A String - Javascript <- titlecase_all_words

3
function titleCase(str) {

    var myString = str.toLowerCase().split(' ');
    for (var i = 0; i < myString.length; i++) {
        var subString = myString[i].split('');
        for (var j = 0; j < subString.length; j++) {
            subString[0] = subString[0].toUpperCase();
        }
        myString[i] = subString.join('');
    }

    return myString.join(' ');
}

1
Dodaj komentarze do swojej odpowiedzi.
HDJEMAI

3

Lub można to zrobić za pomocą funkcji replace () i zastępując pierwszą literę każdego słowa jego „upperCase”.

function titleCase(str) {
    return str.toLowerCase().split(' ').map(function(word) {
               return word.replace(word[0], word[0].toUpperCase());
           }).join(' ');
}

titleCase("I'm a little tea pot");

2

Oto, jak możesz to zrobić za pomocą mapfunkcji w zasadzie, robi to samo, co zaakceptowana odpowiedź, ale bez for-loop. W związku z tym oszczędza kilka wierszy kodu.

function titleCase(text) {
  if (!text) return text;
  if (typeof text !== 'string') throw "invalid argument";

  return text.toLowerCase().split(' ').map(value => {
    return value.charAt(0).toUpperCase() + value.substring(1);
  }).join(' ');
}

console.log(titleCase("I'm A little tea pot"));


2

Poniżej znajduje się inny sposób zapisania wielkimi literami pierwszego alfabetu każdego słowa w ciągu.

Utwórz niestandardową metodę dla obiektu String przy użyciu prototype.

String.prototype.capitalize = function() {
    var c = '';
    var s = this.split(' ');
    for (var i = 0; i < s.length; i++) {
        c+= s[i].charAt(0).toUpperCase() + s[i].slice(1) + ' ';
    }
    return c;
}
var name = "john doe";
document.write(name.capitalize());

1

Bardziej kompaktowe (i nowoczesne) przepisanie @ czegoś proponuje rozwiązanie:

let titleCase = (str => str.toLowerCase().split(' ').map(
                c => c.charAt(0).toUpperCase() + c.substring(1)).join(' '));
    
document.write(titleCase("I'm an even smaller tea pot"));


1

Surowy kod:

function capi(str) {
    var s2 = str.trim().toLowerCase().split(' ');
    var s3 = [];
    s2.forEach(function(elem, i) {
        s3.push(elem.charAt(0).toUpperCase().concat(elem.substring(1)));
    });
    return s3.join(' ');
}
capi('JavaScript string exasd');

powinieneś podać trochę więcej szczegółów (co było nie tak?)
śledzenie

1

Użyłem replace()z wyrażeniem regularnym:

function titleCase(str) {

  var newStr = str.toLowerCase().replace(/./, (x) => x.toUpperCase()).replace(/[^']\b\w/g, (y) => y.toUpperCase());

  console.log(newStr);
}

titleCase("I'm a little tea pot")

1

Tutaj znajduje się kompletne i proste rozwiązanie:

String.prototype.replaceAt=function(index, replacement) {
        return this.substr(0, index) + replacement+ this.substr(index
  + replacement.length);
}
var str = 'k j g           u              i l  p';
function capitalizeAndRemoveMoreThanOneSpaceInAString() {
    for(let i  = 0; i < str.length-1; i++) {
        if(str[i] === ' ' && str[i+1] !== '')
            str = str.replaceAt(i+1, str[i+1].toUpperCase());
    }
    return str.replaceAt(0, str[0].toUpperCase()).replace(/\s+/g, ' ');
}
console.log(capitalizeAndRemoveMoreThanOneSpaceInAString(str));

Dlaczego zmieniasz String.prototype za każdym razem, gdy wywoływana jest ta metoda? Jeśli cokolwiek, musisz to zrobić raz , a najlepiej nigdy nie dotykać prototypów wbudowanych. To trochę nie, nie ...
coś tutaj

1
let str = "I'm a little tea pot";

str = str.toLowerCase();

i dodaj właściwość css text-transform: capitalize;do odpowiedniego elementu.


0

Sprawdź poniższy kod.

function titleCase(str) {
  var splitStr = str.toLowerCase().split(' ');
  var nstr = ""; 
  for (var i = 0; i < splitStr.length; i++) {
    nstr +=  (splitStr[i].charAt(0).toUpperCase()+ splitStr[i].slice(1) + " 
    ");
  }
  console.log(nstr);
}

var strng = "this is a new demo for checking the string";
titleCase(strng);

2
Dziękujemy za ten fragment kodu, który może zapewnić ograniczoną, natychmiastową pomoc. Właściwe wyjaśnienie byłoby znacznie poprawić swoją długoterminową wartość pokazując dlaczego jest to dobre rozwiązanie problemu, a byłoby bardziej użyteczne dla czytelników przyszłości z innymi, podobnymi pytaniami. Proszę edytować swoją odpowiedź dodać kilka wyjaśnień, w tym założeń już wykonanych.
iBug

0

Od ECMA2017 lub ES8

const titleCase = (string) => {
  return string
    .split(' ')
    .map(word => word.substr(0,1).toUpperCase() + word.substr(1,word.length))
    .join(' ');
};

let result = titleCase('test test test');
console.log(result);

Wyjaśnienie:
1. Najpierw przekazujemy ciąg znaków „test test test” do naszej funkcji „titleCase”.
2. Podzieliliśmy łańcuch na podstawie spacji, więc wynikiem pierwszej funkcji "split" będzie ["test", "test", "test"]
3. Gdy otrzymaliśmy tablicę, użyliśmy funkcji map do manipulowania każdym słowem w tablicy. Kapitalizujemy pierwszy znak i dodajemy do niego pozostały znak.
4. W ostatnim przypadku łączymy tablicę przy użyciu spacji, dzieląc ciąg przez sapce.


Myślę, że brakuje ci czegoś na samym początku przed rozdzieleniem i to jest toLowerCase().
ArchNoob

@ArchNoob, tak, możemy dodać toLowerCase () przed podziałem. Ale jest to całkowicie zależne od przypadku użycia, na przykład jeśli chcemy, aby wyjście "TeSt Test" dla wejścia "teSt test", w tym przypadku nie możemy dodać metody toLowerCase ().
Pulkit Aggarwal,

0

function titleCase(str) {
  //First of all, lets make all the characters lower case
  let lowerCaseString = "";
  for (let i = 0; i < str.length; i++) {
    lowerCaseString = lowerCaseString + str[i].toLowerCase();
  }
  //Now lets make the first character in the string and the character after the empty character upper case and leave therest as it is
  let i = 0;
  let upperCaseString = "";
  while (i < lowerCaseString.length) {
    if (i == 0) {
      upperCaseString = upperCaseString + lowerCaseString[i].toUpperCase();
    } else if (lowerCaseString[i - 1] == " ") {
      upperCaseString = upperCaseString + lowerCaseString[i].toUpperCase();
    } else {
      upperCaseString = upperCaseString + lowerCaseString[i];
    }
    i = i + 1;
  }
  console.log(upperCaseString);

  return upperCaseString;
}

titleCase("hello woRLD");

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.