当前位置: 首页 > 知识库问答 >
问题:

Javascript将字符串中每个单词的第一个字母大写[重复]

祁建业
2023-03-14

我有一个函数,应该把字符串中每个单词的第一个字母大写,但不知何故,它提供了不正确的结果,知道为什么吗?我需要修理一下。

所以输入:hello dolly输出:hello dolly。

空格计算正确,但大写不正确。

function letterCapitalize(str) {
  str = str.replace(str.charAt(0), str.charAt(0).toUpperCase());
  let spaces = [];
  for (let i = 0; i < str.length; i++) {
    if (str[i] === ' ') spaces.push(i);
  }
  for (let space of spaces) {
    str = str.replace(str.charAt(space + 1), str.charAt(space + 1).toUpperCase());
  }
  return str;
}

console.log(letterCapitalize("hello there, how are you?"));

共有2个答案

班安平
2023-03-14

你可以使用string.toUpperCase(),或者如果你需要更具体的逻辑,你可以使用string.replace()和一些正则表达式

const letterCapitalize = x => x.toUpperCase();

const letterCapitalizeWithRegex = x => x.replace(/[a-z]/g, l => l.toUpperCase());

console.log("my string".toUpperCase());

console.log(letterCapitalize("my string"));

console.log(letterCapitalizeWithRegex("my string"));
段干华晖
2023-03-14
// Option One

function capitalize1( str ) {
  let result = str[ 0 ].toUpperCase();

  for ( let i = 1; i < str.length; i++ ) {
    if ( str[ i - 1 ] === ' ' ) {
      result += str[ i ].toUpperCase();
    } else {
      result += str[ i ];
    }
  }

  return result;
}

// Option Two

function capitalize2(str) {
  const words = [];

  for (let word of str.split(' ')) {
    words.push(word[0].toUpperCase() + word.slice(1));
  }

  return words.join(' ');
}

console.log(capitalize1('hello there, how are you?'))
console.log(capitalize2('hello there, how are you?'))
 类似资料: