替换java中的某些固定String

时间:2012-07-06 08:36:16

标签: java string replace

我有一个字符串查询,看起来像这样

  

{ “查询”:{ “布尔”:{ “应该”:[{ “术语”:{ “user.id”:[#users_to_follow], “minimum_match”:1}},{ “术语”:{ “鸣叫”:[#keywords_to_track], “minimum_match”:1}}]}}, “过滤器”:{ “范围”:{ “publishedDate”:{ “从”:#UNIX_TIMESTAMP}}}, “尺寸”:# sizelength}“

我试图用另一个字符串替换查询中的某些字符串:

query.replace("#users_to_follow",usersToFollow);
query.replace("#keywords_to_track", keyworsToTrack);
query.replace("#Unix_timestamp","1325930428000" );
query.replace("#sizelength",Integer.toString(SMLApplicationProperties.ES_RESULTSET_SIZE));

然而,当我运行这个东西时,它实际上并没有从查询中替换给定的字符串。

3 个答案:

答案 0 :(得分:5)

您需要了解String类是不可变的。对String的任何操作都会返回一个新的String。您需要将其分配回查询变量:

query = query.replace("#users_to_follow",usersToFollow); 
query = query.replace("#keywords_to_track", keyworsToTrack); 
query = query.replace("#Unix_timestamp","1325930428000" ); 
query = query.replace("#sizelength",Integer.toString(SMLApplicationProperties.ES_RESULTSET_SIZE));

答案 1 :(得分:2)

您需要获取replace操作的结果:

query = query.replace("#users_to_follow",usersToFollow);

那是因为query.replace不会改变你传递的字符串,它会构建并返回一个新字符串(java中的字符串是不可变的)。

答案 2 :(得分:0)

您可以优化(不被所有人接受):

String query = query.replace("#users_to_follow",usersToFollow).replace("#keywords_to_track", keyworsToTrack).replace("#Unix_timestamp","1325930428000" ).replace("#sizelength",Integer.toString(SMLApplicationProperties.ES_RESULTSET_SIZE));