下面是使用了正则表达式,从字符串 ‘10011001000111’ 中 晒选出 ‘10’ 、‘0011’、‘01’、‘1100’等诸如此量对称的字符串块出来。
在其中使用的是ES6标准来编写的,具体可以查看代码的注释。有疑问的可以留言一起讨论!
1 export default (str)=>{
2 let r =[]; ///先准备好一个数组容器,把结果放进去
3 let match = (str) =>{ ///定义一个函数,用来处理截取过来的字串
4 let j = str.match(/^(0+|1+)/)[0]; ///这里使用了Array.prototype.match()其返回数组
//使用了 ^()的意思是匹配字符串中第一个含有括号里面的字符
//而 0+ 是指匹配到0 或者 00 或者 00000000 等诸如此类的字符。
5 let o = (j[0]^1).toString().repeat(j.length);
匹配后拿到j 数组里面的第一个元素 然后对其进行 ^1 的运算(既0=>1 或 1=>0 的操作)
然后使用repeat()方法对其进行补字符长度补全的操作,例如目前是两位:00 占用两个位,如
果需要4个位,则用 repeat(4)将 00 补全位 0000,
这个算法的核心是,利用自己建立的模板 比如 通过以下一行代码,建立了如‘0011’ ‘10’等
的模板,然后跟截取过来的字符串做 正则匹配对比,如果有则返回此 字符