Javascript在第一个空格上拆分字符串
我有以下代码作为表排序脚本的一部分。现在,它允许“FIRST-LAST”格式的姓名通过“重新格式化”到“LAST,FIRST”按姓氏排序 目前它似乎在最后一个空格后按名称排序(前让·克劳德·范达姆按“D”排序) 我怎样才能将这个脚本更改为在第一个空间排序(这样Van Damme就会出现在V中)Javascript在第一个空格上拆分字符串,javascript,sorting,space,Javascript,Sorting,Space,我有以下代码作为表排序脚本的一部分。现在,它允许“FIRST-LAST”格式的姓名通过“重新格式化”到“LAST,FIRST”按姓氏排序 目前它似乎在最后一个空格后按名称排序(前让·克劳德·范达姆按“D”排序) 我怎样才能将这个脚本更改为在第一个空间排序(这样Van Damme就会出现在V中) 提前谢谢 您可以使用以下方法将该功能缩短一点: 要将名字放在所有其他名称后面,可以使用 function FullNamePrepareData(td, innerText) { var name
提前谢谢 您可以使用以下方法将该功能缩短一点: 要将名字放在所有其他名称后面,可以使用
function FullNamePrepareData(td, innerText) {
var names = innerText.split(' '),
first = names.shift();
return names.join(' ')+', '+first;
}
或使用:
您可以使用以下方法将该函数缩短一点: 要将名字放在所有其他名称后面,可以使用
function FullNamePrepareData(td, innerText) {
var names = innerText.split(' '),
first = names.shift();
return names.join(' ')+', '+first;
}
或使用:
我不知道分拣在哪里进行;听起来您只是想更改重新排序的输出 最简单的方法是使用regexp:
// a part without spaces, a space, and the rest
var regexp = /^([^ ]+) (.*)$/;
// swap and insert a comma
"Jean-Claude Van Damme".replace(regexp, "$2, $1"); // "Van Damme, Jean-Claude"
我不知道分拣在哪里进行;听起来您只是想更改重新排序的输出 最简单的方法是使用regexp:
// a part without spaces, a space, and the rest
var regexp = /^([^ ]+) (.*)$/;
// swap and insert a comma
"Jean-Claude Van Damme".replace(regexp, "$2, $1"); // "Van Damme, Jean-Claude"
代替
.split()
和循环,您可以执行替换:
return innerText.replace(/^([^\s]+)\s(.+)$/,"$2, $1");
也就是说,使用
([^\s]+)
查找第一个空格之前的所有字符,并将其与第一个空格(.+)
之后的字符交换,同时插入逗号。而不是.split()
,并且可以执行替换的循环:
return innerText.replace(/^([^\s]+)\s(.+)$/,"$2, $1");
也就是说,使用
([^\s]+)
查找第一个空格之前的所有字符,并将其与第一个空格(.+)
之后的字符交换,同时插入一个逗号。我想您要的是:
var words = innerText.split(' '),
firstName = words.shift(),
lastName = words.join(' ');
return lastName + ', ' + firstName;
这会给你“范·达姆,让·克劳德”我想你在追求这个:
var words = innerText.split(' '),
firstName = words.shift(),
lastName = words.join(' ');
return lastName + ', ' + firstName;
这会给你“Van Damme,Jean-Claude”你的函数似乎返回了正确的结果。但是,如果排序不正确,您需要向我们展示排序函数以及如何在其中应用
PrepareData
。变量a
的作用是什么?如果名字中有空格怎么办?我知道有人的名字是“安妮·玛丽”(没有连字符)。@nnnnnnnn到目前为止,我们数据库中的所有记录要么只有一个名字,要么名字连字符为“安妮·玛丽”,所以这不是问题(现在)。如果我们有“安妮·玛丽·范·达姆”、“安妮·玛丽·史密斯”和“安妮·范·达姆”这样的唱片,我真的不知道我们会如何攻击它。幸运的是,我们还没有遇到这个问题。您的函数似乎返回了正确的结果。但是,如果排序不正确,您需要向我们展示排序函数以及如何在其中应用PrepareData
。变量a
的作用是什么?如果名字中有空格怎么办?我知道有人的名字是“安妮·玛丽”(没有连字符)。@nnnnnnnn到目前为止,我们数据库中的所有记录要么只有一个名字,要么名字连字符为“安妮·玛丽”,所以这不是问题(现在)。如果我们有“安妮·玛丽·范·达姆”、“安妮·玛丽·史密斯”和“安妮·范·达姆”这样的唱片,我真的不知道我们会如何攻击它。幸运的是,我们还没有遇到这个问题。+1,但是您可以使用非空白\S
而不是非空白[^\S]
这似乎做得很好。这两个“非空白”示例之间的区别是什么?+1,但是您可以使用非空白\S
而不是非空白[^\S]
这似乎做得很好。这两个“非空白”示例之间有什么区别?