插入字符串的问题

时间:2012-02-15 14:15:15

标签: java string

我的字符串如下

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"

3 个答案:

答案 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注入的攻击。请改用预备语句。