split(/ \ s + /)。pop() - 它做了什么?

时间:2013-08-04 01:54:01

标签: javascript regex split

你能把这个表达翻译成单词吗?

split(/\s+/).pop()

它是在javascript中使用正则表达式来分割字符串,但原理是什么?

2 个答案:

答案 0 :(得分:15)

该行代码将在空格上分割一个字符串以创建一个单词数组,然后返回最后一个单词。

据推测,你已经看到过在某种字符串上使用它,例如:

var someString = "Hello, how are you today?";
var lastWord = someString.split(/\s+/).pop();

在这种情况下,lastWord将是"today?"

如果你一次只做一步:

var someString = "Hello, how are you today?";
var words = someString.split(/\s+/);

现在words是数组:["Hello,", "how", "are", "you", "today?"]

然后:

var lastWord = words.pop();

现在lastWord是数组中的最后一项,即"today?"

.pop() method实际上也会删除数组中的最后一项(并将其返回),因此在我的第二个示例中,它会更改words,使其为["Hello,", "how", "are", "you"]

如果你在我的第一个例子中一行中完成所有操作,那么你实际上并没有保留对数组的引用,只保留.pop()返回的最后一项。

MDN有more information about .split()

从字符串中获取最后一个单词的另一种方法如下:

var lastWord = someString.substr( someString.lastIndexOf(" ") + 1 );

答案 1 :(得分:2)

TLDR:

1)拆分部分根据正则表达式/ \ s + /创建一个数组(这意味着用空格分隔)

2)pop部分返回数组的最后一个元素

可以改写为

var array = "one two three four five".split(/\s+/);
var lastMemberOfArray = array.pop()

我经常使用split("。")。pop()来获取文件扩展名

var html = "holidays-and-parties/photos/a-pioneer-halloween.html"
var ext = html.split(".").pop(); // ext now holds 'html'