我的字符串如下
String first = "UPPER(substr(con.table_name,1,4)) <> 'BIN$' order by name"
String second = "and constraint_type = 'C' "
我必须在第一个UPPER(substr(con.table_name,1,4)) <> 'BIN$'
我的结果
String c = "UPPER(substr(con.table_name,1,4)) <> 'BIN$'
和constraint_type = 'C' order by name"
答案 0 :(得分:1)
字符串是不可变的,所以首先你不能更改 a
引用的字符串。您需要创建一个新字符串并重新分配a
以引用新字符串:
要在b
字符串中的order by
部分之前插入a
字符串,您可以
int i = a.indexOf("order by");
String newString = a.substring(0, i) + b + a.substring(i);
结果是
UPPER(substr(con.table_name,1,4)) <> 'BIN$' and constraint_type = 'C' order by name
答案 1 :(得分:0)
看看java.text.MessageFormat。
这允许使用参数格式化格式字符串(如UPPER(substr(con.table_name,1,4)) <> 'BIN$' {0} order by name
)(您的参数将为and constraint_type = 'C'
)。
答案 2 :(得分:0)
如果你确实控制了a,那么其他一个答案可能就是最好的解决方法。
假设您无法控制字符串a的内容,可以调用a.split(“order by”),将两个结果片段保存为两个变量a1和a2,并在a1和a2之间创建一个b的新字符串。像这样(未经测试):
String[] temp = a.split("order by");
String result = temp[0] + " " + b + " order by " + temp[1];
同样,我还没有真正测试过这个,但你明白了。
另一方面,看起来你在那里做了一些简单的SQL操作。不要这样做,我的朋友。你的代码很容易受到sql注入的攻击。请改用预备语句。