如何在字符串中包含空格时使用substring()

时间:2016-06-14 14:20:38

标签: javascript

我有一个字符串,其中包含一个人的名字和姓氏,例如John Doe。我想把这个字符串转换为John D.通常情况下,我只会在姓氏变量上使用substring(0,1),但是当名字和姓氏是一个字符串之间有一个空格时,如何实现这一点?

8 个答案:

答案 0 :(得分:7)

您可以使用String.split(""):

str = "John Doe";
strSplit = str.split(" ");
str = strSplit[0] + " " + strSplit[1].substring(0,1);

注意:这仅适用于名字为姓名,没有中间名的情况。

答案 1 :(得分:6)

您可以通过将名称除以空格并修改姓氏来实现此目的。

var name = "John Doe"; // store the name

var nameParts = name.split(" "); // split the name by spaces

var lastName = nameParts[nameParts.length - 1]; // get the last name
lastName = lastName.substring(0, 1) + "."; // replace the last name with the first letter and a full stop

nameParts[nameParts.length - 1] = lastName; // insert the last name back into the array of names at the end

name = nameParts.join(" "); // join the names back together with their original spaces

console.log(name); // gives "John D."

这也符合您的问题评论中讨论的名称John Frank Doe,在这种情况下会给John Frank D.

答案 2 :(得分:3)

你可以使用匹配。



console.log('John Doe'.match(/(.* .)/)[0] +'.');
console.log('John Frank Doe'.match(/(.* .)/)[0] +'.');




答案 3 :(得分:1)

我建议String.replace使用正则表达式/ (\S)\S*\s*$/

"John Doe".replace(/ (\S)\S*\s*$/, ' $1.'); // John D.

<强>示例:

  • John FrankDoe⇒JohnFrank D。
  • PeterP⇒PeterP。
  • K⇒K
  • PeterO'Neil⇒PeterO.
  • ÜlfkenÖsterling⇒ÜlfkenÖ。

var names = [
    "John Common",
    "Susan Antony Klein",
    "Elise R. Johann",
    "Simon R. K.",
    "Peter P",
    "Peter",
    "P",
    "Peter O'Neil",
    "Donald McIntyre",
    "John   Whitespace   In   Beween",
    "John Whitespace At The End   ",
    "John Rabe and Rainer Rilke",
    "Ülfken Österling"
  ],
  shorten = name => name.replace(/ (\S)\S*\s*$/, " $1.");

for (name of names) console.log(shorten(name));

对于包含所有测试用例的实时正则表达式演示,请参阅https://regex101.com/r/zR2nN4/1

要与其他答案进行比较,请参阅https://jsfiddle.net/pwq0bdyz/

答案 4 :(得分:0)

使用split()获取姓氏

var fullName = "John Doe";
var names= fullName .split(" ");
var shortFullName=names[0]+" "+names[1].substring(0,1)+".";
alert(shortFullName);

答案 5 :(得分:0)

你可以通过split来做到这一点,返回一个由空格分隔的上述字符串内容组成的数组,然后通过子字符串操作它:

var name = "first last"; 
var firstLast = name.Split(" "); 
alert(firstLast[0] + " " + firstLast[1].substring(0,1));//

答案 6 :(得分:0)

var a = 'John Doe';
var b = a.split(' ');
var c = b[0] + ' ' + b[1].substring(0,1) + '.'; 
  

“John D。”

答案 7 :(得分:0)

您可以使用string.lastIndexOf()

&#13;
&#13;
var fullname = "John Frank Doe";
var result = fullname.substring(0,fullname.lastIndexOf(" ")+2) + ".";
console.log(result)
&#13;
&#13;
&#13;