JavaScript拆分字符串无法正常工作

时间:2012-08-20 01:43:34

标签: javascript split

我正在尝试拆分字符串但是在执行此操作时出现问题。

我的字符串是:

var EventList = "0x0,0x1,0x1 | 0x0,0xff,0x2 | 0x0,0x1,0x1 | 0x0,0x1,0x1 | 0x0,0xff,0x5 | 0x0,0xff,0x7 | 0x0,0xff,0x3 | 0x0,0xff,0x6";

我需要能够从字符串中删除所有空格(我使用以下代码)

EventList = EventList.replace(/\s/g,'');

我需要更换所有| with,(逗号)(我使用以下代码)

EventList = EventList.replace('|',',');

然后我需要使用,(逗号)(我使用以下代码)将字符串拆分

EventList = EventList.split(','); 

我正在尝试从我的字符串中填写0x2(我正在使用以下代码)

警报(EVENTLIST [5]);

但是,它将0x2 | 0x0警告为字符串而不是0x2。

我的完整代码如下:

var EventList = "0x0,0x1,0x1 | 0x0,0xff,0x2 | 0x0,0x1,0x1 | 0x0,0x1,0x1 | 0x0,0xff,0x5 | 0x0,0xff,0x7 | 0x0,0xff,0x3 | 0x0,0xff,0x6";
EventList = EventList.replace(/\s/g,''); // replace any spaces in EventList
EventList = EventList.replace('|',',');  // replace any | with ,
EventList = EventList.split(',');       // Split EventList

alert(EventList[5]); // should alert 0x2 but it alerts 0x2|0x0

任何人都知道我哪里出错了?

3 个答案:

答案 0 :(得分:5)

如果使用字符串作为.replace()的第一个参数,它只会转换第一个参数。

var EventList = "a|b|c|d";
EventList = EventList.replace('|',',');
alert("a,b|c|d"); // displays "a,b|c|d"

您需要使用带有/g全局标记的正则表达式,就像您在第一时间所做的那样。

EventList = EventList.replace(/\|/g,',');  // replace any | with ,

|需要在正则表达式中使用\反斜杠进行转义,因为它在正则表达式语法中具有特殊含义。)

我做了这个替换,它显示了“0x2”正如你所说的那样。

答案 1 :(得分:0)

您需要全局替换管道/ | / g。我相信我在过去遇到过这种情况 - 默认情况下在JS中替换不是全局。

答案 2 :(得分:0)

第二次替换中的小错误。应该使用正则表达式来替换“|”。见下文:

var EventList = "0x0,0x1,0x1 | 0x0,0xff,0x2 | 0x0,0x1,0x1 | 0x0,0x1,0x1 | 0x0,0xff,0x5 | 0x0,0xff,0x7 | 0x0,0xff,0x3 | 0x0,0xff,0x6";
EventList = EventList.replace(/\s/g,''); // replace any spaces in EventList
EventList = EventList.replace(/\|/g,',');  // replace any | with ,
EventList = EventList.split(',');       // Split EventList

alert(EventList[5]); // alerts 0x2
相关问题