1

私は文字列を持っています:

 str =    'View:{
            Name:"View1",
            Image:{
                BackgroundImage:"Image.gif",
                Position: [0, 0],
                Width: 320,
                Height: 480
            },

            Button:{
                BackgroundImage:"Button.gif",
                Transition:"View2",
                Position: [49, 80],
                Width: 216,
                Height: 71
            },

            Button:{
                BackgroundImage:"Button2.gif",
                Position: [65, 217],
                Width: 188,
                Height: 134
            },'

この正規表現を使用して、末尾に「:{」が付いている要素に「_#」を追加します

var i = 0;
str = str.replace(/([^:]+):{/g, function(m, p1) { return p1 + "_" + (++i).toString() + ":{"; });

出力は

str =    'View_1:{
        Name:"View1",
        Image_2:{
            BackgroundImage:"Image.gif",
            Position: [0, 0],
            Width: 320,
            Height: 480
        },

        Button_3:{
            BackgroundImage:"Button.gif",
            Transition:"View2",
            Position: [49, 80],
            Width: 216,
            Height: 71
        },

        Button_4:{
            BackgroundImage:"Button2.gif",
            Position: [65, 217],
            Width: 188,
            Height: 134
        },'

それから私はそれでたくさんのことをします、そして今私はそれから「#」を取り除く必要があります。それらの「 #」を削除するにはどうすればよいですか?

必須ではありませんが、私が抱えているもう1つの問題は、最初の正規表現が0から開始して増分し、各要素に次の増分番号を与えることです。各要素がそのタイプでインクリメントするようにしようとしています。このような:

str =    'View_1:{
        Name:"View1",
        Image_1:{
            BackgroundImage:"Image.gif",
            Position: [0, 0],
            Width: 320,
            Height: 480
        },

        Button_1:{
            BackgroundImage:"Button.gif",
            Transition:"View2",
            Position: [49, 80],
            Width: 216,
            Height: 71
        },

        Button_2:{
            BackgroundImage:"Button2.gif",
            Position: [65, 217],
            Width: 188,
            Height: 134
        },'

ここでも何が間違っているのかについての入力はありますか?

4

1 に答える 1

1

最初の質問については、次のように置き換え_\d+:{てください:{

2つ目は、タイプごとに個別のカウンターが必要です。これを試して:

var i = {};
str = str.replace(/([^:]+):{/g, function(m, p1) {
    i[p1] = (i[p1] || 0)+1;
    return p1 + "_" + i[p1].toString() + ":{";
});
于 2012-12-28T19:03:40.850 に答える