2015-10-12 12 views
9

Yêu cầu của tôi là để có được viết tắt tên như,Bắt Tên viết tắt sử dụng JS

Name = FirstName LastName 

Initials = FL 

tôi có thể nhận trên kết quả sử dụng này,

var initials = item.FirstName.charAt(0).toUpperCase() + 
            item.LastName.charAt(0).toUpperCase(); 

Nhưng bây giờ yêu cầu của tôi được thay đổi, nếu như tên chỉ bao gồm của 1 từ trở lên sau đó 2, vì vậy trong các trường hợp sau làm cách nào tôi có thể nhận được tên viết tắt theo yêu cầu của tôi,

FullName = FU 

FirstName MiddleName LastName = FL 

1stName 2ndName 3rdName 4thName 5thName = 15 

Làm thế nào tôi có thể nhận được trên intials từ chuỗi trong JS?

Ngoài ra bây giờ tôi chỉ có chuỗi item.Name sắp tới trong ....

Trả lời

3

Bạn có thể làm một chức năng cho rằng:

var name = 'Name'; 

function getInitials(name,delimeter) { 

    if(name) { 

     var array = name.split(delimeter); 

     switch (array.length) { 

      case 1: 
       return array[0].charAt(0).toUpperCase(); 
       break; 
      default: 
       return array[0].charAt(0).toUpperCase() + array[ array.length -1 ].charAt(0).toUpperCase(); 
     } 

    } 

    return false; 

} 

Fiddle: http://jsfiddle.net/5v3n2f95/1/

8

Kiểm tra getInitials chức năng bên dưới:

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'));

Các chức năng chia chuỗi đầu vào bằng dấu cách:

names = string.split(' '), 

Sau đó lấy tên đầu tiên, và nhận được chữ cái đầu tiên:

initials = names[0].substring(0, 1).toUpperCase(); 

Nếu có nhiều hơn thì một tên, nó lấy chữ cái đầu tiên của họ (một ở vị trí names.length - 1):

if (names.length > 1) { 
    initials += names[names.length - 1].substring(0, 1).toUpperCase(); 
} 
23

Tại sao không có tình yêu dành cho regex?

var name = 'Foo Bar 1Name too Long'; 
 
var initials = name.match(/\b\w/g) || []; 
 
initials = ((initials.shift() || '') + (initials.pop() || '')).toUpperCase(); 
 
alert(initials);

+0

Lưu ý rằng điều này không xử lý một tên một từ tốt. '" Prince "' có các chữ cái đầu '' PUNDEFINED "' – thetallweeks

+0

@thetallweeks Bạn nói đúng, tôi đã chỉnh sửa mã để xử lý tên một từ và chuỗi rỗng. – Shanoor

+0

Đây là tên chỉ sử dụng 26 bảng chữ cái cơ bản. Không hỗ trợ tên có dấu phụ. – Gideon

2

dễ dàng hơn với chức năng bản đồ:

var name = "First Last"; 
var initials = Array.prototype.map.call(name.split(" "), function(x){ return x.substring(0,1).toUpperCase();}).join(''); 
2

Bạn có thể sử dụng js viết tắt này

"FirstName LastName".split(" ").map((n)=>n[0]).join("."); 
Các vấn đề liên quan