2012-02-15 80 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注入。改用準備好的語句。