字符串处理问题

字符串处理问题

问题描述:

现有String变量 [color=green]strJson[/color],值如下:
[code="java"]
{"rows":[[ {"class":"com.ORM.Product","flag":1,"id":1,"leavelfactorydate":1230516479000,"price":1555.5,"productNo":"1","providerNo":1},
{"class":"com.ORM.Provider","delFlag":0,"fax":"021-12234234","id":1,"note":null}
]]}
[/code]
我想得到的格式是:
[code="java"]
{"rows":[ {"class":"com.ORM.Product","flag":1,"id":1,"leavelfactorydate":1230516479000,"price":1555.5,"productNo":"1","providerNo":1,
"class":"com.ORM.Provider","delFlag":0,"fax":"021-12234234","id":1,"note":null}
]}
[/code]
即替换的地方有:
[quote]
[color=green]
1. [[ => [
2. ]] => ]
3. },{ => ,
[/color]
[/quote]

我尝试了以下方法:
[code="java"]
strOk=[color=green]strJson[/color].replace("\[\[", "\[");
strOk=[color=green]strJson[/color].replace("\]\]", "\]");
strOk=[color=green]strJson[/color].replace("\},{\]", "\,");
[/code]
结果:还是原来样子,失败

[code="java"]
public String processReplace(String input,String beReplace,String replace){

String processedString="";

int index = input.indexOf(beReplace);

if(index>0){

String start=input.substring(0,index);

String end = input.substring(index+beReplace.length(),input.length());

processedString = start+replace+end;

System.out.println(processReplace(processedString,beReplace,replace));

}

return processedString;

}

Test t = new Test();

t.processReplace(strJson,"[[", "[");

t.processReplace(strJson,"]]", "]");
t.processReplace(strJson,"},{", ",");
[/code]

结果:strJson没有变化,失败

[quote]
特来请教一下,望指点,谢谢!
[/quote]
[quote]
附问:Hql语句写SELECT 加具体字段 FROM ... 和 直接写FROM ... 返回的ArrayList为什么会不一样?
[/quote]

[code="java"]strJson = strJson.replaceAll("\[\[","[");
strJson = strJson.replaceAll("\]\]","]");
strJson = strJson.replaceAll("\}\,\{",",");

System.out.println(strJson);[/code]

strJson = t.processReplace(strJson,"[[", "[");

String类的replace函数不会改变原来字符串的,因此必须获得返回值。