分析spilt中的一些用法和常见问题

今天早上起来说去读下英语吃饭,突然读到了split我透,一下忘了他这个东西是怎么用的了?想看下《高级程序设计》,突然看到了下面这个语句我不知道什么意思

var aa = "rgb,blue,green,yellow";
console.log(aa.split(/[^\,]+/));//["", ",", ",", ",", ""]

我的心好痛我刚刚复习玩了正则,我以为返回3个",",可是却返回了["", ",", ",", ",", ""]这个东西我有点难受了啊

经过一顿的学习发现了其中的原因?

因为他们(非,)有rgb blue green yellow 这样类似的为切割点,当我们切割玩了后我们可想象一下是不是”离rgb中间也有一段距离呢?

所以就有了返回了["", ",", ",", ",", ""],基于这个我看了下MDN对split的介绍我发现了了新大陆

1.split中放正则与不放正则去区别:例子去除空白字符

var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ';
var rb = /\s+/;
var rb1 = /' '/;
console.log(names.split(rb));
console.log(names.split(' '));
//["Harry", "Trump", ";Fred", "Barney;", "Helen", "Rigby", ";", "Bill", "Abel", ";Chris", "Hand", ""]

他们的返回的值都是相同的,

而错误的写法是

var rb = /' '/;//["Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand "]

在这里rb代表的单单是引号的选择,空格必须是\s的写法

二:当你需要分裂结果的时候:如果分割符合都在返回的数组中:用捕获括号的正则表达式()匹配的结果包含在数组中

var myString = 'Hello 1 word. Sentence number 2.';
var splits = myString.split(/(\d)/);

console.log(splits);//[ "Hello ", "1", " word. Sentence number ", "2", "." ]

三:以数组为切割符号

var myString = 'ca,bc,a,bca,bca,bc';
var splits = myString.split(['a','b']); 
console.log(splits);  //["c", "c,", "c", "c", "c"]

四:就是split与match(exec)的区别

var aa = "rgb,blue,green,yellow";
var rb = /[^g]+/g;
console.log(aa.split(/[^\,]+/)); //一个是找到括号内的东西并将他们作为切割符合切割
console.log(aa.match(rb)); //一个是找个括号内的东西

split:是找到括号里的值将它做为切割符合切割掉(移除),将剩余的东西以数组的形式返回

match:是找到括号里的值,以数值的形式返回

案例:在下面的示例中,split()查找0或多个空格,后面是分号,后面是0或更多空格,如果找到,

var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand';
var rep = /\w+\s\w+/g
console.log(names.match(rep));
var rep2 = /\s*\;\s*/g
console.log(names.split(rep2));

//["Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand"]

猜你喜欢

转载自blog.csdn.net/qq_39148344/article/details/86471649