Java Regex将围绕某些文本要求添加引号
我有一个字符串,我试图在满足某些要求的文本周围添加引号“”。规则是在“Text:”之后和“;”之前的单词中添加“”或“}” 下面是字符串:EDIT(请注意“”。这不是一个JSON对象。它只是一个字符串): 我无法让它工作试试这个:Java Regex将围绕某些文本要求添加引号,java,javascript,regex,string,Java,Javascript,Regex,String,我有一个字符串,我试图在满足某些要求的文本周围添加引号“”。规则是在“Text:”之后和“;”之前的单词中添加“”或“}” 下面是字符串:EDIT(请注意“”。这不是一个JSON对象。它只是一个字符串): 我无法让它工作试试这个: str.replace(/Text:[\s]*([^;}\r\n]+)/ig, 'Text: "$1"'); 尽管我怀疑你的问题中的str是否是一个字符串。它看起来更像(无效的)JSON对象,而不是字符串。浏览器将无法解释此文本javascript对象上的任何内容
str.replace(/Text:[\s]*([^;}\r\n]+)/ig, 'Text: "$1"');
尽管我怀疑你的问题中的
str
是否是一个字符串。它看起来更像(无效的)JSON对象,而不是字符串。浏览器将无法解释此文本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
},
};
分号仅在对象的末尾。
这些属性感觉不像是一个正则变量 您可以使用
var fixed = s.replace(/(Text:\s*)(.+?)(\s*;|}|$)/gm,'$1"$2"$3');
演示在@gabayakag.Petrioli,“var”表示javascript。另外,我不知道这是什么,但它不是JSON语法。
最内部属性末尾的代码>错误。真的,我想就是这样。棘手的是,冒号前后可能会有空格,冒号后面的单词可能已经有双引号或单引号,以及各种字符作为内容,要引用的部分可能在结束的大括号前有一个换行符等等,可能是.@gabykag.Petrioli,它是用Javascript编写的。我一直在使用.replace()@JaredFarrish,实际上这与json(有点类似),但实际上完全不同。这是我们拥有的一个程序的指令脚本。可能字符串包含var str=
part…不过,我忘了JSON需要双引号标识符,而原生JS对象初始值设定项不需要。这就是它的样子,减去代码>。是否要在分号等之前去掉末尾的空格?如果已经有双引号或单引号怎么办?@JaredFarrish The代码>是我最讨厌的。我对JSON解析器的经验是,如果JSON是有效的,它们要么解析整个JSON,要么就吐出一个错误,即使它的一部分是无效的。@LeeMeador这实际上取决于OP是否想这样做。如果是的话,正则表达式就会改变。它需要{}围绕整个事情,然后。它是一种自定义数据格式,所以JSON不合适,除非它是传递或其他东西的一部分。我感谢大家的帮助,但这太复杂了。不要把它当作一个物体。在这一点上,这只是一个字符串。在这之前,它是一个有几十行代码的对象。现在它只是一个字符串,它会被传递到一个C++程序中,作为字符串。我用这个代码给它添加了“x”数字。str=str.replace(/([^:]+):{/g,函数(m,p1){i[p1]=(i[p1]| | 0)+1;返回p1+“”+i[p1]。toString()+“:{;”;“现在我处理完它们了,所以我用'finalString=objString.replace(/\ud++/g,{');”来删除它们。现在我正在尝试添加引号。有意义吗?@Rob-你能把它放到问题中吗?在评论中读起来太难了。
var fixed = s.replace(/(Text:\s*)(.+?)(\s*;|}|$)/gm,'$1"$2"$3');