为什么split函数返回两个值?

时间:2016-12-30 05:57:41

标签: perl

var query = {}
if(req.body.customerName) {
  query = {$or:[{firstName:{$regex: req.body.customerName, $options: 'i'}},{lastName:{$regex: req.body.customerName, $options: 'i'}}]}
}

ModelName.find(query , function (err, data) {
   if(error) {
     // return error
   }
   //return data
});

输出:2

  

据我所知,数组长度应为1。       但它显示2。       有人可以解释一下。我在网上搜索过,但没有给出关于此的内容

4 个答案:

答案 0 :(得分:12)

查看the perl split documentation

参见例6:

"如果分隔符位于字符串的开头,那么结果数组中的第一个元素将为空。"

- http://perlmeme.org/howtos/perlfunc/split_function.html

答案 1 :(得分:2)

perl split()函数通过传递的正则表达式拆分字符串,并且它不会强制任何一方的字符串部分为非空。

此规则的唯一例外是当省略第三个参数(LIMIT)时 - 然后忽略任何尾随分隔符以及那些潜在的空字符串。这不适用于字符串的开头,即问题中的情况。

答案 2 :(得分:0)

模式定义分离感兴趣的元素。根据定义,如果您有分隔符,则必须分隔两个元素。更一般地说,你必须有一个项目而不是分隔符的数量。

你想要

$string =~ s/^#//;  # Remove leading "#".

答案 3 :(得分:0)

它基于'#'拆分给定的字符串。由于字符串以#开头,因此第一个splitd元素将为空elemnt。第二个是汤姆。所以返回的长度是2。

@values = ('', 'Tom')