原始字符串:
String ss = "SELECT AA,BB FROM INVE_MASTER WHERE AA = ";现在要把离结尾最近的 AA 替换成 LOWER(AA)替换后的字符串:
SELECT AA,BB FROM INVE_MASTER WHERE LOWER(AA) =
我的写法如下,但是觉得不是很好:
@Test
public void testReplace() {
String ss = "SELECT AA,BB FROM INVE_MASTER WHERE AA = ";
int index = ss.trim().lastIndexOf("AA");
int length = "AA".length();
//System.out.println(index);
//System.out.println(length);
String pre = ss.substring(0, index);
String center = ss.substring(index,index+length);
String suf = ss.substring(index+length,ss.length());
//System.out.println(pre);
//System.out.println(center);
//System.out.println(suf);
String newSQL = new StringBuffer(pre).append("LOWER(").append(center).append(")").append(suf).toString();
//System.out.println(newSQL);
}
String ss = "SELECT AA,BB FROM INVE_MASTER WHERE AA = ";现在要把离结尾最近的 AA 替换成 LOWER(AA)替换后的字符串:
SELECT AA,BB FROM INVE_MASTER WHERE LOWER(AA) =
我的写法如下,但是觉得不是很好:
@Test
public void testReplace() {
String ss = "SELECT AA,BB FROM INVE_MASTER WHERE AA = ";
int index = ss.trim().lastIndexOf("AA");
int length = "AA".length();
//System.out.println(index);
//System.out.println(length);
String pre = ss.substring(0, index);
String center = ss.substring(index,index+length);
String suf = ss.substring(index+length,ss.length());
//System.out.println(pre);
//System.out.println(center);
//System.out.println(suf);
String newSQL = new StringBuffer(pre).append("LOWER(").append(center).append(")").append(suf).toString();
//System.out.println(newSQL);
}
解决方案 »
- 一段java代码
- 高分悬赏:怎样把一个jframe程序转为applet程序?
- Eclipse格式化输出
- 我想写个天气预报系统
- 有谁见过这样的错.class cannot be loaded: java.lang.ExceptionInInitializerError - java.lang.ExceptionInInitializerError
- 数据库相关
- 请问为什么去掉public 就能运行(超级菜鸟问题)?
- 怎样显示JTextArea滚动条?
- 小弟想学习j2me ,请推荐一些书?
- 请问sevrlet怎么结合HTML模板工作呢?谢谢
- 小小疑问~~~~~~~~
- 【求助】XStream序列化对象到xml
String newSQL = new StringBuilder(sql.length() + 7)
不过 SQL根本不区分大小写 不知道转化为小写有何用
那用户输入 aAaB 之类的进行模糊查询可以匹配到
String ss = "SELECT AA,BB FROM INVE_MASTER WHERE AA = ";
int index = ss.trim().lastIndexOf("AA");
String pre = ss.substring(0, index);
String center = ss.substring(index,index+length);
String suf = ss.substring(index+length,ss.length());
用lastIndexOf()比用正则更好
用append()代替String+String更好
用StringBuilder又比StringBuffer更好
在此前提下,最精炼的代码实现如下:
public static String testReplace(String sql, String r) {
int index = sql.lastIndexOf(r);
return index<0? sql : new StringBuilder(sql.subSequence(0,index)).append("LOWER(").append(r).append(")").append(sql.substring(index+r.length())).toString();
}
public static String testReplace(String sql, String r) {
int index = sql.lastIndexOf(r);
return index<0? sql : new StringBuilder(sql.subSequence(0,index)).append("LOWER(")
.append(r).append(")").append(sql.substring(index+r.length())).toString();
}