14

入力パラメーター値を、記号で区切られたパイプ区切りのキーと値のペアとして受け取ります=。例えば:

"|User=0101|Name=ImNewUser|IsAdmin=0|RefId=23ae2123cd223bf235|"

したがって、形式は次のとおりです。|KEY=VALUE|KEY_2=VALUE_2|....|KEY_n=VALUE_n|

それを JSON オブジェクトに分割する必要があります。したがって、私のオブジェクトは次のようになります。

{
 'User':'0101',
 'Name':'ImNewUser',
 'IsAdmin':'0',
 'RefId'='23ae2123cd223bf235'
}

複数のオプションがあるため、最善の方法は次のとおりです。

  • |で分割された各要素に対して、 で分割して再度使用できます=
  • 正規表現に依存して文字列置換を行うことができます。
  • =末尾の|シンボルを削除して分割し、 2 つの異なる配列をインデックスに関連付けます。

JavaScript(Node.jsでのプログラミング)でこれを行うための最良/最も効率的な方法を誰か教えてもらえますか?

4

6 に答える 6

39

最初のものは良さそうです:

var str = "|User=0101|Name=ImNewUser|IsAdmin=0|RefId=23ae2123cd223bf235|";


var result = {};
str.split('|').forEach(function(x){
    var arr = x.split('=');
    arr[1] && (result[arr[0]] = arr[1]);
});
于 2013-04-27T07:42:49.503 に答える
12

正規表現を使用することに決めた場合は、次のように正規表現をブロックしていることを確認してください。

var result = {};

s.replace(/([^=|]+)=([^|]*)/g, function(noStep3, a, b) { result[a] = b; });

正規表現鉄道

于 2013-04-27T08:06:35.230 に答える
0

正規表現を使用して各ペアをグループ化し (こちらKEY=VALUEを参照) 、それらを繰り返し処理して JSON オブジェクトを埋めます。したがって、次のようなものがあります。

var re = /(([^=\|]+)=([^=\|]+))/g;
var match;
var myString = "|User=0101|Name=ImNewUser|IsAdmin=0|RefId=23ae2123cd223bf235|";
while (match = re.exec(myString)) {
    console.log(match);
    // first iteration returns ["User=0101","User=0101","User","0101"] and so on
}
于 2013-04-27T07:43:23.983 に答える
0
var str = "|User=0101|Name=ImNewUser|IsAdmin=0|RefId=23ae2123cd223bf235|";


var result = {}, name;
str.substring(1, str.length-1).split(/\||=/).forEach(function(item, idx){
   idx%2 ? (result[name] = item) : (name = item); 
});
于 2013-04-27T07:46:53.683 に答える