我想从字符串中提取首字母,比如:
Name = FirstName LastName
Initials = FL我可以用这个得到上面的结果
const initials = item
.FirstName
.charAt(0)
.toUpperCase() +
item
.LastName
.charAt(0)
.toUpperCase();但是现在我的要求变了,好像名字只包含一个词或两个以上,所以在下面的情况下,我怎样才能根据我的要求得到首字母,
FullName = FU
FirstName MiddleName LastName = FL
1stName 2ndName 3rdName 4thName 5thName = 15如何从JS中的字符串中获得以上首字母?
另外,现在我只有item.Name字符串作为输入。
发布于 2015-10-12 08:27:57
为什么不爱regex?
更新以支持unicode字符并使用ES6特性
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);
发布于 2017-08-24 17:45:40
你可以用这个速记js
"FirstName LastName".split(" ").map((n)=>n[0]).join(".");要只获取名字和姓,可以使用以下速记函数
(fullname=>fullname.map((n, i)=>(i==0||i==fullname.length-1)&&n[0]).filter(n=>n).join(""))
("FirstName MiddleName OtherName LastName".split(" "));发布于 2015-10-12 08:18:39
检查下面的getInitials函数:
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'));
函数将输入字符串拆分为空格:
names = string.split(' '),然后得到名字,并得到第一个字母:
initials = names[0].substring(0, 1).toUpperCase();如果有一个以上的名称,则取姓氏的第一个字母(位于names.length - 1位置的那个):
if (names.length > 1) {
initials += names[names.length - 1].substring(0, 1).toUpperCase();
}https://stackoverflow.com/questions/33076177
复制相似问题