首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JS获取名称首字母

问使用JS获取名称首字母
EN

Stack Overflow用户
提问于 2015-10-12 08:09:16
回答 31查看 105.9K关注 0票数 78

我想从字符串中提取首字母,比如:

代码语言:javascript
复制
Name = FirstName LastName 
Initials =  FL

我可以用这个得到上面的结果

代码语言:javascript
复制
const initials = item
    .FirstName
    .charAt(0)
    .toUpperCase() +
  
    item
    .LastName
    .charAt(0)
    .toUpperCase();

但是现在我的要求变了,好像名字只包含一个词或两个以上,所以在下面的情况下,我怎样才能根据我的要求得到首字母,

代码语言:javascript
复制
FullName =  FU
FirstName MiddleName LastName = FL
1stName 2ndName 3rdName 4thName 5thName = 15

如何从JS中的字符串中获得以上首字母?

另外,现在我只有item.Name字符串作为输入。

EN

回答 31

Stack Overflow用户

发布于 2015-10-12 08:27:57

为什么不爱regex?

更新以支持unicode字符并使用ES6特性

​

代码语言:javascript
复制
let name = 'ÇFoo Bar 1Name too ÉLong';
let rgx = new RegExp(/(\p{L}{1})\p{L}+/, 'gu');

let initials = [...name.matchAll(rgx)] || [];

initials = (
  (initials.shift()?.[1] || '') + (initials.pop()?.[1] || '')
).toUpperCase();

console.log(initials);

​

票数 81
EN

Stack Overflow用户

发布于 2017-08-24 17:45:40

你可以用这个速记js

代码语言:javascript
复制
"FirstName LastName".split(" ").map((n)=>n[0]).join(".");

要只获取名字和姓,可以使用以下速记函数

代码语言:javascript
复制
(fullname=>fullname.map((n, i)=>(i==0||i==fullname.length-1)&&n[0]).filter(n=>n).join(""))
("FirstName MiddleName OtherName LastName".split(" "));
票数 55
EN

Stack Overflow用户

发布于 2015-10-12 08:18:39

检查下面的getInitials函数:

​

代码语言:javascript
复制
var getInitials = function (string) {
    var names = string.split(' '),
        initials = names[0].substring(0, 1).toUpperCase();
    
    if (names.length > 1) {
        initials += names[names.length - 1].substring(0, 1).toUpperCase();
    }
    return initials;
};

console.log(getInitials('FirstName LastName'));
console.log(getInitials('FirstName MiddleName LastName'));
console.log(getInitials('1stName 2ndName 3rdName 4thName 5thName'));

​

函数将输入字符串拆分为空格:

代码语言:javascript
复制
names = string.split(' '),

然后得到名字,并得到第一个字母:

代码语言:javascript
复制
initials = names[0].substring(0, 1).toUpperCase();

如果有一个以上的名称,则取姓氏的第一个字母(位于names.length - 1位置的那个):

代码语言:javascript
复制
if (names.length > 1) {
    initials += names[names.length - 1].substring(0, 1).toUpperCase();
}
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33076177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档