我正在尝试拆分字符串但是在执行此操作时出现问题。
我的字符串是:
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
任何人都知道我哪里出错了?
答案 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