-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 回答