它是关于使用regexp作为分割符在字符串末尾进行分割
console.log('ab '.split(/\s*$/));Run Code Online (Sandbox Code Playgroud)
输出:['ab','']
但是如果我删除结尾空间
console.log('ab'.split(/\s*$/))Run Code Online (Sandbox Code Playgroud)
输出:['ab']
为什么第二个在输出中没有?
split
将字符串转换为新数组中的子字符串数组。例如-
"ab cd".split(" ")
Run Code Online (Sandbox Code Playgroud)
结果:["ab", "cd"]
它在有空白的地方分裂" "。但如果没有空格,它将创建包含主字符串的数组。例如-
"abcd".split(" ")
Run Code Online (Sandbox Code Playgroud)
结果:["abcd"]
现在来看看正则表达式的部分。
用于\s查找空白字符。
'ab '.split(/\s/)结果["ab", ""]和
'ab'.split(/\s/)结果["ab"]
第一个字符串包含一个空格,它将字符串分成两个子字符串,但第二个字符串不包含空格,因此它不创建子字符串。
匹配n*任何包含零次或多次出现 n 的字符串。
so,\s*匹配任何包含零个或多个空白字符的字符串。
'ab '.split(/\s*/)结果["a", "b", ""]和
'ab'.split(/\s*/)结果["a", "b"]
由于第一个字符串包含一个空格和一个零空格(总共两个),因此它将字符串拆分为三个子字符串。但第二个字符串仅包含一个零空白,因此它创建了两个子字符串。
量词n$匹配任何末尾带有 n 的字符串。
so\s*$匹配 string 至少有一个空格的任何字符串。因为它只会在空格结尾处匹配,如果没有空格,则不会结束。所以,它不会匹配。
'ab '.split(/\s*$/)结果["ab", ""]和
'ab'.split(/\s*$/)结果["ab"]
由于第一个字符串包含一个空格,因此它将字符串拆分为两个子字符串,但由于第二个字符串中没有任何空格,因此它不会创建子字符串。
简而言之,(/\s*$/)模式搜索空白末尾的任何空白。当您使用 时split(/\s*$/),它仅在模式匹配时才会拆分。
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |