2 strinkbug strinkbug 于 2016.03.23 09:38 提问

下面这个JavaScript的输出是什么,为什么?
    function testStringSplit() {
        var colorText = "red,blue,green,yellow";
        var splittedText = colorText.split(/[^\,]+/g);
        return splittedText.join("-");
    }
            在《JavaScript高级程序设计(第三版)》的p128中看到这个例子,按照我的理解这个输出可能是:
            red-blue-green-yellow,但是实际上输出和作者说的一样,有点迷糊了。

6个回答

qq_19891827
qq_19891827   2016.03.23 10:02
已采纳

得到的结果应该是‘-,-,-,-’,
首先 colorText.split(/[^\,]+/g);的意思是按照一个以上的非逗号将变量colorText进行分割,返回一个数据,这一行代码执行后结果应该为:["", ",", ",", ",", ""];
然后 plittedText.join("-");的意思是将一个数组的每一个元素以‘-’为间隔返回一个字符串,结果为‘-,-,-,-’

hoohyouxi
hoohyouxi 回复strinkbug:为啥是一个以上啊?
一年多之前 回复
hoohyouxi
hoohyouxi [^\,]+,+表示1个或多个,^文本开头,\,表示逗号,我也不是特别明白,能讲解一下嘛?谢谢
一年多之前 回复
strinkbug
strinkbug 有道理,原来这个正则表达式是表示一个以上的非逗号,我一直把^理解为字符串开头的锚定符了。然后死活就不理解了。
一年多之前 回复
bdmh
bdmh   Ds   Rxr 2016.03.23 09:41

var splittedText = colorText.split(',');

enpterexpress
enpterexpress   2016.03.23 10:20

图片说明

strinkbug
strinkbug   2016.03.23 10:48

问题已解决,谢谢各位,特别感谢@qq_19891827

qq_19891827
qq_19891827 不用客气
一年多之前 回复
WinsenJiansbomber
WinsenJiansbomber   2016.03.23 10:54

测试重点点在正则表达

hoohyouxi
hoohyouxi   2016.03.23 11:46

这脑袋有瑕疵了,我懂了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!