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

Javascript Split String on First Space

本文关键字:拆分 字符串 空格 第一个 Javascript      更新时间:2023-09-26

作为表排序脚本的一部分,我有以下代码。现在,它允许"FIRST LAST"格式的名称通过"重新格式化"为"LAST,FIRST"来按姓氏排序。

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;
}

目前,它似乎是根据最后一个空格后的名字排序的(前让-克洛德·范·达姆会根据"D"排序)。

我怎么能把这个脚本改为在第一个空格排序(这样范达姆就会出现在V中)?

提前感谢!

您可以替换.split()和循环:

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

也就是说,用([^'s]+)找到第一个空格之前的所有字符,并将其与第一个空格(.+)之后的字符交换,同时插入逗号。

您可以通过使用数组方法将函数缩短一点:

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替换:

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

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

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

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

我想你在追求这个:

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

这会给你"范,让-克洛德"