首页 > 解决方案 > 如何用多个空格分割名称字符串?

问题描述

我想对名字和姓氏进行排序,我的问题是当用户有多个名字时,例如:

'Michael Jordan Atticus Smith'

基本上,史密斯是那里的姓氏,我如何用它分割名字和姓氏?我想要的结果是:

'Michael Jordan Atticus' 'Smith' 

标签: javascript

解决方案


let str = 'Michael Jordan Atticus Smith';

console.log( ex1(str) );
console.log( ex2(str) );
console.log( ex3(str) );

function ex1(str) {
  let names = str.match(/(.*?)\s(\S+)$/); // (1)
  return [ names[1], names[2] ];
}

function ex2(str) {
  let names = str.split(" ");
  return [names.pop(), names.join(" ")].reverse(); // (2)
}

function ex3(str) {
  let last = ""
  str = str.replace(/\s(\S+)$/, function(full_match, parenthesis_1) {
    last = parenthesis_1;
    return "";
  });
  
  return [str, last];
}

(1) match()返回匹配字符串的数组。另外,请参阅RegEx 小抄表

(2)数组pop()方法移除,并返回最后一个元素。代码从左到右执行,因此,第二个names.join(" ")收集了左边的 3 个名称。


推荐阅读