Javascript 拆分切片连接字符串

Javascript split slice join string

提问人:Cornie Loots 提问时间:12/14/2022 最后编辑:Atena DadkhahCornie Loots 更新时间:12/18/2022 访问量:343

问:

我在这个问题上有点挣扎。

我有一个字符串“Jan van Wyk”。“Jan”是名字,“van Wyk”是姓氏。

let enqBy = "Jan van Wyk";
var firstName = enqBy.split(' ').slice(0, -1).join(' ');
var lastName = enqBy.split(' ').slice(-1).join(' ');
console.log(firstName);
console.log(lastName);

使用此代码,结果是,这不是我想要的。firstname = "Jan van"lastname = "Wyk"

如果我有一个像“Elvis Presly”这样的字符串,代码可以完美地工作,并且.firstname = "Elvis"lastname = "Presley"

请指导我。

JavaScript 字符串 连接 拆分 切片

评论

0赞 unhackit 12/14/2022
名字总是第一个词,剩下的词是姓氏吗?
1赞 Jaydip Jadhav 12/14/2022
s.replace(' ','_').split('_')??
0赞 Edu 12/14/2022
你的代码没有按照你说的去做,如果我执行你的代码 firstname is 和 lastname isJan vanWyck
0赞 Nick Parsons 12/14/2022
你的代码的行为与你解释的不一样(我给你做了一个代码片段),尽管它仍然没有产生你预期的输出
2赞 gog 12/14/2022
解析实名是一项非常复杂的任务。使用任何数量的代码,您只能希望解析现实世界中可能的一小部分。在你继续之前,花一些时间定义你要接受哪些名称变体,哪些不接受(例如,怎么样?或等等)?Jan Wellem van WykKarl-Theodor Maria von und zu Wick

答:

0赞 Edu 12/14/2022 #1

正如您在问题中所说: "Jan" is the firstname and "van Wyk" is the lastname.

然后,您要为firstname选择第一项,为lastname选择其余项,此代码将执行以下操作:

const [firstname, ...rest] = enqBy.split(' ')
const lastname = rest.join(' ')
0赞 Charles Kasasira 12/14/2022 #2

你的代码似乎在我这边工作,希望我能很好地回答你的问题,但只是在拆分后将名字调整为第一个字符串,并用空格连接最后两个字符串。

const enqBy = "Jan van Wyk"

var firstName = enqBy.split(' ')[0]; 
var lastName = enqBy.split(' ').slice(1).join(' ');

console.log(firstName)
console.log(lastName)

// Output
// "Jan"
// "van Wyk"
0赞 Maryam Moshtoofar 12/14/2022 #3

在下面使用此代码。这也适用于像“Elvis Presly”这样只有一个单词的名字。

    var enqBy = "Jan van Wyk";
    var firstName = enqBy.split(" ").slice(0, 1).join(" ");
    var lastName = enqBy.split(" ").slice(1).join(" ");
0赞 Surya R Praveen 12/14/2022 #4

要获取句子的名字,请使用空格获取拆分,然后获取姓氏,获取句子和切片的长度。

let abc = "Praveen Ash Surya"
var fname = abc.split(' ', 1).join(' ');
var lname = abc.split(' ', abc.length).slice(1).join(' ');
console.log(fname);
console.log(lname);

拆分可以与分隔符和限制符一起使用

lastname.split(seperator, ?limit)

0赞 Atena Dadkhah 12/14/2022 #5

您可以尝试以下代码:

const fullName = "Jan van Wyk"
const regex = /^(\w+\s)(.*)$/g
const matches = regex.exec(fullName)
matches.shift() // remove first value which is the fullName
const [firstName, lastName] = matches

console.log(firstName.trim()) // Jan
console.log(lastName.trim()) // van Wyk

此正则表达式匹配的第一组是名称(一些字母 + 空格),第二组是 fullName 的其余部分。