tom*_*ato 0 java regex replace
所有,
我将SQL查询存储为我的Java应用程序的XML,以提高可维护性.
我的部分查询需要参数化,因此我创建了可用于在创建查询字符串时用值替换的标识符.
例如
WHERE CB.callback_date >= TO_DATE('$LASTDATE$','DD/MM/YYYY')
AND CB.callback_date < TO_DATE('$FROMDATE$','DD/MM/YYYY')
Run Code Online (Sandbox Code Playgroud)
我的应用程序中有一个函数将替换这些子字符串.
public static String xmlQueryPrep(String prep)
{
//add dates to query
prep.replace("'$LASTDATE$'", "'20/10/2013'");
prep.replace("'$FROMDATE$'", "'18/10/2013'");
prep.replace("<", "<").replace(">", ">");
return prep;
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它正在替换<和>的ASCII代码,但它并没有取代我的标记
产量
WHERE CB.callback_date >= TO_DATE('$LASTDATE$','DD/MM/YYYY')
AND CB.callback_date < TO_DATE('$FROMDATE$','DD/MM/YYYY')
Run Code Online (Sandbox Code Playgroud)
为什么不能正确更换?
Strings在Java中是不可变的.
如果一个对象的状态在构造后不能改变,则该对象被认为是不可变的
如果您查看文档,您将看到应用于String以修改其内容的每个方法都将返回一个新的String.
你应该做 :
prep = prep.replace("'$LASTDATE$'", "'20/10/2013'");
prep = prep.replace("'$FROMDATE$'", "'18/10/2013'");
prep = prep.replace("<", "<").replace(">", ">");
return prep;
Run Code Online (Sandbox Code Playgroud)
甚至更好(方法链接):
return prep.replace("'$LASTDATE$'", "'20/10/2013'")
.replace("'$FROMDATE$'", "'18/10/2013'")
.replace("<", "<")
.replace(">", ">");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |