2012-02-15 84 views
-2

我有串状如下问题在插入串

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

这里有什么问题? – 2012-02-15 14:17:10

+3

所以你希望我们为你做点什么,而不是告诉我们你试过的东西,显然没有给予那些帮助你的人的功劳? – npinti 2012-02-15 14:18:45

+0

我的问题是如何在字符串中插入第二个字符串,但是应该在字符串之前和之后插入(按名称排序)(UPPER(substr(con.table_name,1,4))<>'BIN $') – MohanMaverick 2012-02-15 14:22:47

回答

1

字符串是不可变的,所以首先你不能更改字符串引用由a编辑。您需要创建一个新的字符串,并重新分配a指新的字符串:

插入在a字符串order by部分之前的b串,你可以做

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 
0

看一看java.text.MessageFormat。 这允许使用参数格式化的格式字符串(如UPPER(substr(con.table_name,1,4)) <> 'BIN$' {0} order by name)(您的参数将为and constraint_type = 'C')。

0

如果您确实拥有对a的控制权,其他答案之一可能是解决此问题的最佳方法。

假设你对字符串a的内容没有任何控制,你可以调用a.split(“order by”),将两个结果片段保存到两个变量a1和a2中,并创建一个新的字符串b,其中a1和a2。像这样的(未经测试)的东西:

String[] temp = a.split("order by"); 
String result = temp[0] + " " + b + " order by " + temp[1]; 

同样,我还没有真正测试了这一点,但你的想法。

另一方面,它看起来像你在那里做一些简单的sql操作。不要这样做,我的朋友。你的代码很容易被sql注入。改用准备好的语句。