2012-01-19 3 views
2

Как заменить специальный символ $ owner на «hr» и $ table_name «hr» и $ constraint_name на «scma_constraint» в динамическом режиме. ИзменитьКак заменить специальный символ и его следующую строку одной строкой

"alter table $owner.$table_name ENABLE constraint $constraint_name;" 

в

"alter table hr.hr ENABLE constraint scma_constraint;" 
+0

Используйте метод String.replace(). – adatapost

+0

Возможный дубликат - [Заменить знак $ String] (http://stackoverflow.com/q/4134316/50776)? – casperOne

ответ

1

String.replace()

String myString = "..."; 
myString = myStrign 
     .replace("$owner", "hr") 
     .replace("$table_name", "hr") 
     .replace("$constraint_name", "blah"); 
1

Не уверен, что то, что вы хотите, но:

String str = "alter table $owner.$table_name ENABLE constraint $constraint_name;" 
str = str.replace("$owner", "hr") 
    .replace("$table_name", "hr") 
    .replace("$constraint_name", "scma_constraint"); 

Javadoc доступен here.

Заменить() метод возвращает новую строку, в результате замены всех вхождений oldChar в этой строке с newChar (без поддержки регулярных выражений)

Метод

replaceAll() делает то же самое, но при поддержке регулярное выражение.

При необходимости, отредактируйте ваш вопрос с большей точностью на то, что вы хотите.

0

Если вы хотите заменить все матчи, а затем использовать метод replaceAll() и вам необходимо, чтобы экранировать специальные символы, такие как доллар, потому что replaceAll() получает регулярное выражение в качестве первого параметра, и если вы пишете "$owner" это будет означать, что ваша строка должна начинаться с "owner".

myString.replaceAll("\\$owner", "hr") 
.replaceAll("\\$table_name", "hr") 
.replaceAll("\\$constraint_name", "scma_constraint"); 
0

Метод replaceAll на String должен делать трюк. Первый магазин все пары ключ-значение в карте, а затем сделать что-то выглядит следующим образом:

for each entry in the map 
    myString.replaceAll(entry.key, entry.value) 

Следует straigtforward реализовать.

Смежные вопросы