5251

如果字符串的第一个字符是一个字母,如何使其大写,但不改变其他任何字母的大小写?

例如:

  • “这是一个测试”“这是一个测试”
  • “艾菲尔铁塔”“埃菲尔铁塔”
  • “/index.html”“/index.html”
  • 21
    强调有一个名为下芯管柱这包括这个和其他一些很棒的工具。
    – 亚伦
    评论 2013年4月15日19:16
  • 4
    对于使用角形的管道,有一个标题框管道:angular.io/api/common/TitleCase管道 评论 2021年1月27日20:54
  • 对于那些不知道堆栈溢出是如何工作的人:解决建议作为“答案”发布到页面上。任何未解决的建议、澄清请求和单独/相关超链接都可以作为问题下的评论发布。 评论 2021年6月16日23:17

106答案106

重置为默认值
20

带箭头功能

设fLCapital=s=>s.replace(/./,c=>c.toUpperCase())fLCapital(“这是一个测试”)//“这是测试”

使用箭头功能,另一种解决方案

设fLCapital=s=>s=s.charAt(0).toUpperCase()+s.slice(1);fLCapital(“这是一个测试”)//“这是测试”

使用数组和map()

让namesCapital=names=>names.map(name=>name.replace(/./,c=>c.toUpperCase()))namesCapital(['james','robert','mary'])//[“james”,“robert”,“mary”]
19

只有因为这真的是一句话,我才会包括这个答案。这是一个欧洲标准6-基于插值字符串的一行程序。

let setStringName=“埃菲尔铁塔”;setStringName=`${setStringName[0].toUpperCase()}${setStrengName.substring(1)}`;
0
18

这个ucfirst公司如果你这样做的话,函数会起作用。

函数ucfirst(str){var firstLetter=str.slice(0,1);return firstLetter.toUpperCase()+str.substring(1);}

感谢J-P的批准。

  • 2
    函数的好名字!它的名称与PHP等价物相同。实际上有一个用JS编写的完整PHP函数库;它叫PHP.js,可以在上找到http://phpjs.org
    – 胡萨姆
    评论 2011年12月8日14:29
  • 12
    一个衬垫:string[0].toUpperCase()+string.substring(1) 评论 2015年11月25日4:01
  • 2
    是什么“aclaration”? 评论 2021年1月6日23:34
18

你可以这样一行完成

string[0].toUpperCase()+string.substring(1)
1
18

这是我的版本。我认为这很容易理解,也很优雅。

var str=“foo bar baz”;//大写str.split(“”).map(w=>w[0].toUpperCase()+w.substr(1).toLowerCase(.join(“”)//返回“Foo Bar Baz”//首字母大写str.charAt(0).toUpperCase()+str.slice(1)//返回“Foo bar baz”
15

功能性方法

常量大写=([s,…String])=>[s.到UpperCase(),…字符串].join(“”);

那么你可以

const titleCase=str=>字符串.split(“”).map(大写).join(“”)
1
  • 2
    别忘了将单词的剩余部分调低()。将一个大写的单词传递给当前的解决方案将使其保持大写。 评论 2018年9月4日11:19
12

咖啡脚本,添加到字符串的原型:

字符串::大写=->@substr(0,1).toUpperCase()+@子(1)

用法为:

“woobie”.大写()

由此产生:

“沃比”
5
  • 12
    这是一个JavaScript问题。
    – 科比
    评论 2014年5月6日0:54
  • 15
    @科比-这是一个咖啡描述的答案。 评论 2014年5月6日19:29
  • 我想Cobby想说的是,一些白痴试图使用愚蠢的库来完成每一个简单的JavaScript任务,而vanilla中的解决方案也很简单String.prototype.capitalize=函数(){return this.substring(0,1).toUpperCase()+this.substring(1).toLowerrCase(
    – 希拉
    评论 2014年7月16日17:17
  • 2
    Coffeescript是一种预处理器语言,而不是库。。。这样的图书馆是愚蠢的 评论 2014年7月30日20:18
  • 4
    让记录状态:CoffeeScript是一种可以编译成JavaScript的小语言。此外,CoffeeScript的黄金法则是:“这只是JavaScript。”我想如果有人真的理解了这两句话,你就会明白我为什么会包含这个答案。希望这为大家澄清了问题。资料来源:coffeescript.org网站 评论 2014年7月30日23:28
12

发布@salim的答案编辑,包括语言环境字母转换。

var str=“测试字符串”;str=str.substring(0,1).toLocaleUpperCase()+str.substrang(1);
2
  • 我会去的str=str.charAt(0).toLocaleUpperCase()+str.substr(1);不过,为了缩短时间
    – 雅科夫
    评论 2017年12月28日20:31
  • 目前,名为“salim”的用户没有回答(用户名可以在任何时候都可以). 它指的是什么答案? 评论 2021年1月6日23:23
12

每个字符串的第一个字符都是大写的。

函数大写(单词){return word[0].toUpperCase()+word.slice(1).toLowerBase();}console.log(大写(“john”))//约翰console.log(大写(“BRAVO”))//布拉沃河console.log(大写(“BLAne”))//布莱恩

  • 单词的第一个字符到大写=单词[0].toUpperCase()跳过第一个字符,剩下的字符=切片(1).toLowerCase(; 评论 2020年7月19日1:10
  • 1
    这也改变了其他字符。问题是“如何使字符串的第一个字母大写,但不改变其他字母的大小写?"
    – 肖恩
    评论 2020年8月22日20:28
  • 您可以忽略代码的另一个额外步骤:+word.slice(1).toLowerCase(); 评论 2020年8月23日0:17
12

咖啡脚本

ucfirst=(str)->str.charAt(0).toUpperCase()+str.slice(1)

作为String原型方法:

字符串::大写=->@charAt(0).toUpperCase()+@slice(1)
1
  • 2
    这个问题很愚蠢,但如何将其添加到coffeescript中的String原型中? 评论 2012年8月15日17:54
11
函数大写(字符串){return string.replace(/^./,Function.call.bind(“”.toUpperCase));}
2
  • 将整个字符串大写
    – 哼哼
    评论 2018年6月25日19:09
  • 2
    @henhen否,正则表达式字符^断言起始位置。然后.匹配单个字符 评论 2018年6月28日16:51
11

使用JS代替string方法&一个w/a正则表达式单词边界看起来很简单。

大写首字母的第一个字符:“the eiffel tower”-->“the eiffel tower”

str.replace(/\b\w/,v=>v.toUpperCase())

将所有单词的第一个字符大写:“埃菲尔铁塔”-->“埃菲尔铁塔”

str.replace(/\b\w/g,v=>v.toUpperCase())
11

这里有一些建议,可以创建一个通用函数,该函数只能大写每个单词的第一个字母或第一个字母,包括用破折号或其他分隔符分隔的单词(如法语中的一些名字)。

默认情况下,该函数只将整个字符串的第一个字母大写,其余字母保持不变。

参数:

  • 信用证:真的强制将单词的其余部分用小写
  • 全部的:真的将每个单词大写

1.无正则表达式版本

函数大写(str、lc、all){if(全部){返回str.split(“”).map(单词=>大写(单词,lc)).join(“”).split(“-”).map(单词=>大写(单词,false)).join(“-”);}其他{返回信用证? str.charAt(0).toUpperCase()+str.slice(1).toLowerCase(:str.charAt(0).toUpperCase()+str.slice(1);}}

2.使用正则表达式

函数大写(str、lc、all){常数替换器=lc?(m,p1,p2)=>p1.到上壳体()+p2.到下壳体():(m,p1,p2)=>p1.to UpperCase()+p2;if(全部){return str.split(/(\s|-|')/).map(s=>s.replace(/^([A-Za-z ali-Ø-ööro-×])(.*)$/,replacer)).join(“”)}其他{return str.replace(/^([A-Za-zà-Öæ-öø-ï])(.*)$/,替换)}}

3.具有其余参数的备选方案

函数大写Word([first,…rest],lc){return first.toUpperCase()+(lc?rest.join(“”).toLowerCase(“”;}函数大写(str、lc、all){全部返回?str.split(/(\s|-|')/).map(s=>大写单词,lc).join(“”):大写单词(str,lc);}

示例

大写(“saiNT-jEAn d'anGély”,false,false)//返回“SaiNT-jEAn d'anGély”大写(“saiNT-jEAn d'anGély”,false,true)//返回“SaiNT-JEAn D'AnGély”大写(“saiNT-jEAn d'anGély”,true,false)//返回“Saint-jean d'angély”大写(“saiNT-jEAn d'anG Ely”,true,true)//返回“圣让·德安吉”
1
  • 更新用户输入大写的jQuery:$('.on-change-capitalize').change(function(){$(this).val($(this.val).capitalie(true,true));});顺便说一句,它也适用于utf8字符;)谢谢! 评论 2014年4月4日6:51
10
//大写首字母函数ucfirst(字段){field.value=字段.value.subtr(0,1).toUpperCase()+字段.value.substr(1);}

用法:

<input type=“text”onKeyup=“ucfirst(this)”/>
1
  • 没有对输入字段的引用,也没有处理此问题的事件要求。除此之外,字段.值为了可读性,可以用变量缩短。
    – 中止9
    评论 2013年5月17日2:29
9

如果您使用其中一个正则表达式答案,请记住它们只适用于ASCII字符。您的所有unicode字母都不会大写。这个XRegExp公司如果您想坚持使用regexp,库及其unicode插件可以解决这个问题。因此,这样的做法是可行的:

String.prototype.capitalize=函数(){return this.replace(XRegExp(“^\\p{L}”),函数($0){return$0.toUpperCase();})}

考虑到它还没有涵盖所有可能性(组合字符,请参阅http://www.regular-expressions.info/unicode.html)只使用.charAt(0).toUpperCase()方法似乎更容易。

1
  • `String.prototype.capitalize=String.prototype.capitalize||函数(){var first=this.substring(0,1);return first.toUpperCase()+this.substring(1);}; 评论 2017年2月6日7:47
9

或者你可以使用糖.js 大写()

例子:

“hello”.大写()->“hello”“hello kitty”.大写()->“hello kitty”“hello kitty”.大写(true)->“hello kitty”
9

一种可能的解决方案:

函数ConvertFirstCharacterToUpperCase(文本){return text.subtr(0,1).toUpperCase()+text.substr(1);}

使用此选项:

alert(ConvertFirstCharacterToUpperCase(“这是字符串”));

这里正在工作JS提琴

9

Unicode和区域设置感知

使用当前语言功能:

函数大写([firstLetter,…rest]){return[firstLetter.toLocaleUpperCase(),…rest].join('');}console.log(大写('foo bar'));console.log(大写(‘ѷҥӕ’)console.log(大写('🎁❄💊🎸⭐'));//标题大小写控制台.log('标题大小写:','foo栏'.split(/\s+/).map(大写).join(“”),);

我们接受被破坏的字符串作为唯一参数[第一封信,……其余],将第一个字符赋给变量第一封信并获取其余字符的数组(…休息)绑定到休息变量。例如,对于字符串乱数假文这应该看起来像:

大写('orem ipsum');//firstLetter=“l”//rest=['o','r','e','m','','i','p','s','u','m’];

现在我们所需要做的就是准备第一个字母的大写版本第一封致本地UpperCase()休息使用扩散算子-并使用.join(“”)

  • 1
    你能解释一下你的函数大写吗。 评论 2019年11月20日10:34
  • 为什么析构化可以与Unicode一起使用,但字符串[0]不?
    – 卡米洛
    评论 3月18日19:02
  • 1
    @卡米洛字符串[0]在UTF-16中工作,每个字符串项最多有2个字节(16位),而许多unicode字符有4个字节(32位)。析构化是“unicode”感知的,也就是说,它知道哪些代码点是4字节,哪些是1或2字节,字符串[0]不是,因此一次最多需要2个字节,有时只需要一半字符。 评论 3月29日1:25
9
/**尽可能简洁,假设您使用的是ES版本6+*/var upLetter1=s=>s.replace(/./,m=>m.toUpperCase());log(upLetter1(“敏捷的棕色狐狸跳过了懒狗。”);//\\那只敏捷的棕色狐狸跳过了那只懒狗//\\
9

这个解决方案可能是新的,也可能是最简单的。

function firstUpperCase(输入){return input[0].toUpperCase()+input.substr(1);}log(firstUpperCase(“大写首字母”);

0
9

将字符串的第一个字符大写并取消大写。

功能包括:

/**第一个字符大写*/函数大写(str){return str.charAt(0).toUpperCase()+str.slice(1);}/**第一个字符小写*/函数uncapitalize(str){return str.charAt(0).toLowerCase()+str.slice(1);}

示例1“第一个字符大写”:

alert(大写(“hello world”);

结果:你好,世界

示例2“第一个字符小写”:

alert(uncapitalize(“你好,世界,今天阳光明媚”);

结果:你好,世界,今天阳光明媚

9
s[0].toUpperCase``+s.substr`1`

让s=“你好”console.log(s[0].toUpperCase``+s.substr`1`)

8

使用原型

String.prototype.capitalize=函数(){将this.charAt(0)+this.slice(1).toLowerCase();}

或使用函数

函数大写(str){return str.charAt(0).toUpperCase()+str.slice(1).toLowerCase(;}
0
8

有多种方法可以做到这一点,请尝试以下方法

var lower=“埃菲尔铁塔”;var upper=lower.charAt(0).toUpperCase()+lower.substr(1);

如果您熟悉正则表达式,可以这样做:

var upper=lower.replace(/^\w/,函数(chr){将chr.返回到UpperCase();});

你甚至可以通过使用更现代的语法来更进一步:

const upper=lower.replace(/^\w/,c=>c.toUpperCase());

此外,这将解决示例中提到的负面场景,如以特殊字符开头的单词,如!@#$%^&*()}{{[];':",.<>/?.

8

使用箭头功能:

常量大写=string=>string[0].toUpperCase()+string.slice(1)
8

优雅的

const大写=([firstChar,…rest])=>`${firstChar.toUpperCase()}${rest.join('')}`;
1
  • 在我看来不太优雅,不太可读。把简单的事情过度复杂化的典型例子。
    – 托瓦尔
    评论 2021年5月31日12:36
8

您可以使用正则表达式方法:

str.replace(/(^|\s)\s/g,letter=>letter.toUpperCase());
8

试试这个单行修复

text[0].toUpperCase()+text.substring(1)函数getCapitalizedText(文本){return text[0].toUpperCase()+text.substring(1)}

通过传递文本,我们可以多次调用此“getCapitalizedText”。

7
var capitaleMe=“字符串不以大写开头”

用substr大写

var capitalized=大写Me.subtr(0,1).toUpperCase()+大写Me.sUBtr(1);
7

我只想使用一个正则表达式:

myString='快速绿色短吻鳄…';myString.trim().replace(/^\w/,(c)=>c.toUpperCase());

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.