Javascript在第一个空间上拆分字符串

时间:2012-08-20 21:28:21

标签: javascript sorting space

我将以下代码作为表排序脚本的一部分。就像现在一样,它允许“最后一个”格式的名称通过“重新格式化”为“最后,第一”来按最后名称排序。

var FullName = fdTableSort.sortText;
function FullNamePrepareData(td, innerText) {
  var a = td.getElementsByTagName('A')[0].innerHTML;
  var s = innerText.split(' ');
  var r = '';
  for (var i = s.length; i > 0; i--) {
    r += s[i - 1] + ', ';
  }
  return r;
}

目前似乎在最后一个空格之后对该名称进行排序(例如Jean-Claude Van Damme将对'D'进行排序)。

如何更改此脚本以在FIRST空间排序(因此Van Damme出现在V中)?

提前致谢!

4 个答案:

答案 0 :(得分:2)

您可以使用array methods

稍微缩短该功能
function FullNamePrepareData(td, innerText) {
    return innerText.split(' ').reverse().join(', ');
}

要仅将名字放在其他所有内容之后,您可以使用

function FullNamePrepareData(td, innerText) {
    var names = innerText.split(' '),
        first = names.shift();
    return names.join(' ')+', '+first;
}

或使用Regexp replace

function FullNamePrepareData(td, innerText) {
    return innerText.replace(/^(\S+)\s+([\S\s]+)/, "$2, $1");
}

答案 1 :(得分:2)

而不是.split()和循环,你可以做一个替换:

return innerText.replace(/^([^\s]+)\s(.+)$/,"$2, $1");

即,使用([^\s]+)找到第一个空格的所有字符,并将其与第一个空格(.+)后的字符交换,同时插入逗号。

答案 2 :(得分:0)

我不知道排序发生在哪里;听起来你只想改变重新排序的输出。

最简单的方法是使用正则表达式:

// 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"

答案 3 :(得分:0)

我想你是在这之后:

    var words = innerText.split(' '),
        firstName = words.shift(),
        lastName = words.join(' ');
    return lastName + ', ' + firstName;        

哪会给你“范达姆,让 - 克劳德”