javascript - 如何用多个空格分割名称字符串?
问题描述
我想对名字和姓氏进行排序,我的问题是当用户有多个名字时,例如:
'Michael Jordan Atticus Smith'
基本上,史密斯是那里的姓氏,我如何用它分割名字和姓氏?我想要的结果是:
'Michael Jordan Atticus' 'Smith'
解决方案
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 个名称。
推荐阅读
- python - 如何在没有直接互联网考虑的软件包依赖项的情况下安装软件包?
- ios - 从模块“RealmSwift”读取时遇到错误
- node.js - 隐式继承
- html - 两张图片,并排响应
- amazon-web-services - 无法让简单的 AWS Web 套接字发布工作
- python - Keras 和 Tensorflow:保存非序列模型权重
- javascript - javascript中其他函数返回的函数
- hyperledger - hyperledger 通过设计支持共识,为什么我们需要另一个共识算法 in fabric
- python - 断言有关模拟 Python 类实例的内容
- python - 在另一个序列化程序中调用的外键