Javascript在第一个空格上拆分字符串
Javascript Split String on First Space
作为表排序脚本的一部分,我有以下代码。现在,它允许"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;
这会给你"范,让-克洛德"
相关文章:
- 通过跳过拆分字符在 javascript 中拆分字符串
- jQuery字符串使用split()方法在空格后拆分字符串
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何在JavaScript中按大小写拆分字符串
- 根据上次出现的、和_拆分字符串
- 拆分字符串数组(JavaScript)后未定义
- 在空行上拆分字符串
- 使用Regex拆分字符串,保留分隔符
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- Nashorn和Rhino:使用空白regexp拆分字符串
- Javascript:不使用.split()方法拆分字符串
- 如何使用正则表达式在javascript中拆分字符串
- Javascript在第一个空格上拆分字符串
- 首次出现时拆分字符串
- 如何使用正则表达式(.match())拆分字符串
- 使用正则表达式拆分字符串
- Javascript:拆分字符串,但仅使用 1 个结果
- Angularjs-拆分字符串问题
- angularjs在拆分字符串时解析语法错误
- 基于javascript中的AND OR逻辑拆分字符串