Проблема при вставке строки - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть строка, как следует

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 ]

1 голос
/ 15 февраля 2012

Строки являются неизменяемыми, поэтому, во-первых, вы не можете изменить строку, указанную 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
0 голосов
/ 15 февраля 2012

Если у вас есть контроль над 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. Вместо этого используйте подготовленные заявления.

0 голосов
/ 15 февраля 2012

Взгляните на java.text.MessageFormat . Это позволяет форматировать строку формата (например, UPPER(substr(con.table_name,1,4)) <> 'BIN$' {0} order by name) с параметрами (ваш параметр будет and constraint_type = 'C').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...