2

文字列を分割しようとしていますが、問題が発生しています。

私の文字列は:

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をalartしようとしています(次のコードを使用しています)

alert(EventList [5]);

ただし、0x2ではなく文字列として0x2|0x0を警告しています。

私の完全なコードは次のようになります。

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

私がどこで間違っているのか誰か知っていますか?

4

3 に答える 3

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」と表示されていました。

于 2012-08-20T01:46:54.370 に答える
0

パイプバー/|/gのグローバル置換を行う必要があります。私は過去にこれに遭遇したと思います-デフォルトでは、JSではグローバルではなく置換します。

于 2012-08-20T01:46:28.480 に答える
0

2回目の交換での小さな間違い。「|」の代わりに正規表現を使用する必要があります。下記参照:

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
于 2012-08-20T01:48:39.873 に答える