-2

特定の要件を満たすテキストの前後に引用符""を追加しようとしているこの文字列があります。ルールは、「Text:」の後に「;」の前の単語に「」を追加することです。または'}'文字列は次のとおりです。EDIT( ""に注意してください。これはJSONオブジェクトではありません。単なる文字列です):

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

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

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

私はそれを動作させることができません

4

3 に答える 3

3

これを試して:

str.replace(/Text:[\s]*([^;}\r\n]+)/ig, 'Text:  "$1"');

私はあなたの質問の文字列であることに疑問を持っていstrますが。文字列というよりも(無効な)JSONオブジェクトのように見えます。

于 2012-12-28T23:07:09.970 に答える
0

ブラウザは、このリテラルjavascriptオブジェクトを解釈できなくなります。構文エラーがあります。

まず、JSオブジェクトのすべてのプロパティでセミコロンを失い、単純なコマを追加する必要があります。

次のようになります。

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

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

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

オブジェクトの最後にのみセミコロンがあります。これらのプロパティは、通常の変数のようには感じられません。

于 2012-12-28T23:27:32.707 に答える
0

あなたが使用することができます

var fixed = s.replace(/(Text:\s*)(.+?)(\s*;|}|$)/gm,'$1"$2"$3');

http://jsfiddle.net/gaby/2etcS/1/のデモ

于 2012-12-28T23:38:30.670 に答える