6

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

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

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

4

2 回答 2

20

那行代码将在空白处拆分一个字符串以创建一个单词数组,然后返回最后一个单词。

大概您已经看到它用于某种字符串,例如:

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()方法实际上还从数组中删除了最后一项(并返回它),所以在我的第二个示例中words,它会更改为["Hello,", "how", "are", "you"].

如果您像我的第一个示例那样在一行中完成所有操作,那么您实际上不会保留对数组的引用,您只需保留由.pop().

MDN 有更多关于.split().

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

var lastWord = someString.substr( someString.lastIndexOf(" ") + 1 );
于 2013-08-04T01:54:42.757 回答
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'
于 2014-10-30T18:35:27.733 回答