Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果分隔符连续出现,.split()的预期行为_Javascript - Fatal编程技术网

Javascript 如果分隔符连续出现,.split()的预期行为

Javascript 如果分隔符连续出现,.split()的预期行为,javascript,Javascript,在这两种情况下,我有两种情况split()的行为不同 1.当我们说 var x ="dadasd\n\n\nsdfsfsdf" var y=x.split('\n') then value of is y ["dadasd", "", "", "sdfsfsdf"] var z ="fsdfsfs\n\n\n" undefined var a =z.split("\n") undefined a ["fsdfsfs", "", "", ""] 但我期待着你的到来 ["dadasd", ""

在这两种情况下,我有两种情况split()的行为不同

1.当我们说

var x ="dadasd\n\n\nsdfsfsdf"
var y=x.split('\n')

then value of is y
["dadasd", "", "", "sdfsfsdf"]
var z ="fsdfsfs\n\n\n"
undefined
var a =z.split("\n")
undefined
a
["fsdfsfs", "", "", ""]
但我期待着你的到来

["dadasd", "", "","","sdfsfsdf"]
2.现在当我们说

var x ="dadasd\n\n\nsdfsfsdf"
var y=x.split('\n')

then value of is y
["dadasd", "", "", "sdfsfsdf"]
var z ="fsdfsfs\n\n\n"
undefined
var a =z.split("\n")
undefined
a
["fsdfsfs", "", "", ""]
这一次,我得到了期望值,为什么这两个场景有不同的行为


为什么在第一种情况下split()的行为会有所不同?java脚本中是否有任何函数可以在第一种情况下为我提供预期的结果?这些行为是一致和正确的。
\n
分隔令牌。在第一种情况下,对于三个
\n
,在三个
\n
和两侧的一个非空令牌之间有两个空令牌(
)。在第二种情况下,
\n
之间有两个空令牌,一个在序列之前的非空令牌,另一个在第三个
\n
之后的空令牌。因此,输出

另一种考虑方法是:
\n
分隔符与输出字符串不对应。相反,对于每个
\n
,左侧有一个标记(如果左侧有另一个
\n
或字符串的开头,则标记可能为空),右侧有一个标记(同样,标记可能为空)。(当然,位于一个分隔符左侧和另一个分隔符右侧的标记只在输出中出现一次。)将分隔符的每次出现以及整个字符串的开始和结束都视为栅栏柱。
split()
的输出是栅栏柱之间的一个数组。因此,如果有三个分隔符,则有五个围栏柱,因此有四个输出标记


读一下可能会有启发性。

FWIW我认为这不是一个好的复制品。对于任何分隔符字符,这都可能是同一个问题,只是它碰巧是换行符。@JamesThorpe好的,重新打开。@JamesThorpe-我同意这是一个糟糕的重复。另一方面,很难想象以前没有人问过这个问题,也没有人回答过这个问题。@TedHopp是的,我正在努力找到一个更好的。是目前为止最接近的,但并不理想。