变量首字母大写

IT技术 javascript jquery
2021-03-14 14:14:30

我在网上搜索过找不到任何可以帮助我的东西。我想在变量中将每个单词的第一个字母大写。

到目前为止,我已经尝试过:

toUpperCase();

没有运气,因为它大写所有字母。

6个回答

使用.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 Αλφα"

效果很好!如果我只想将字符串的第一个字符转换为大写,有关修改应该是什么的任何提示?(而不是每个单词)
2021-04-24 14:14:30
这不适用于像Björn Lüchinger这样的名字,这变成了BjöRn LüChinger有什么解决办法吗?
2021-04-26 14:14:30
@andufo 当然,这实际上要简单得多。只需使用str[0].toUpperCase() + str.slice(1)
2021-04-26 14:14:30
@Dediqated 感谢您指出这一点,如果编辑有帮助,请告诉我。
2021-05-04 14:14:30
@PeterOlson 感谢您的回答!我也结束了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);用于覆盖特殊字符。
2021-05-09 14:14:30

更简单的方法:

$('#test').css('textTransform', 'capitalize');

我必须感谢@Dementic 带领我走上正确的道路。比你们提出的任何建议都简单得多。

这只会更改字符串的视觉表示,而不是字符串值本身。
2021-04-21 14:14:30
您不能将其应用于从 DB 获取的变量,但对于其他实例,此方法非常干净
2021-04-26 14:14:30
注意:text-transform:capitalize不会影响所有大写。
2021-05-01 14:14:30
请注意,它将使用大写保存输入,它只会在视图中转换它
2021-05-02 14:14:30
如果字符串(变量)必须用于某些操作而不只是显示怎么办?
2021-05-13 14:14:30

http://phpjs.org/functions/ucwords:569有一个很好的例子

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

(为简洁起见,从源代码中省略了函数注释。有关详细信息,请参阅链接的源代码)

编辑:请注意,此函数将每个单词的第一个字母(如您的问题所要求)大写,而不仅仅是字符串的第一个字母(如您的问题标题所要求)

@RuslanAbuzant 那将回答一个不同的问题。将下划线解释为单词分隔符(或一般空格)很好,但这不是 OP 所要求的……甚至可能会破坏他的用例。
2021-05-08 14:14:30
如果原始字符串中有下划线则不起作用,请将其添加到 REGEX 以获得更好的性能。
2021-05-10 14:14:30
这比公认的一种解决方案更有效,即在撇号后的句子中将单词大写,因此例如“我是一个例子”变成“我是一个例子”
2021-05-15 14:14:30
ucwords() 很烂。它不适用于 Unicode(尤其是西里尔字母、希腊字母和其他中欧字母)。最好在后端使用 mb_convert_case(),例如: mb_convert_case($_POST['name'], MB_CASE_TITLE, 'utf-8');
2021-05-16 14:14:30

只是想添加一个纯 javascript 解决方案(没有 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;
2021-04-21 14:14:30

我想您可以使用 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”。

不应该有像 firstChar = firstChar.toUpperCase(); ? 我尝试了 Node.js 中的代码,但我不得不这样做,否则什么都没有改变!
2021-05-13 14:14:30