TypeScript对象数组指定字段首字母大写实现异常求助
问题:如何将对象数组中Name字段首字母大写并保留完整字符串?
我的对象数组如下:
"response":[ { "No":13, "Name":"sadfasf asdfafddf", "Email":"asdfasfd@asdfasfd.com" }, { "No":16, "Name":"ddfdf", "Email":"asdfasfd@asdfasfd.com" }, { "No":15, "Name":"ddfdf", "Email":"Test@gmail.com" } ]
我尝试将Name字段首字母转为大写,编写了如下代码:
this.List.forEach( function(elm) { elm.Name=elm.Name.charAt(0).toUpperCase(); });
但执行后仅显示首字母,无法得到完整的首字母大写后的字符串,请问该如何解决?
解决方案
你当前的代码只提取了首字母并转大写,没有拼接原字符串的剩余部分,所以只会保留首字母。需要把首字母大写后,拼接上原字符串从索引1开始的剩余内容:
单个单词首字母大写
this.List.forEach(function(elm) { // 处理空字符串场景,避免报错 if (elm.Name) { elm.Name = elm.Name.charAt(0).toUpperCase() + elm.Name.slice(1); } });
多单词(空格分隔)首字母大写
如果需要处理类似sadfasf asdfafddf这种包含多个单词的Name,让每个单词首字母都大写,可以用以下方式:
this.List.forEach(function(elm) { if (elm.Name) { elm.Name = elm.Name.split(' ') .map(word => { // 处理空单词(连续空格的情况) return word ? word.charAt(0).toUpperCase() + word.slice(1) : word; }) .join(' '); } });
原理说明
charAt(0).toUpperCase():获取字符串第一个字符并转为大写slice(1):提取字符串从索引1到末尾的所有字符,和首字母拼接后就是完整的首字母大写字符串- 多单词场景通过
split(' ')拆分单词,逐个处理后用join(' ')重新拼接成完整字符串
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

