如何用一个字符串替换特殊字符及其下一个字符串

时间:2012-01-19 11:39:53

标签: java string replace

如何使用“hr”替换特殊字符$ owner,将$ table_name替换为“hr”,将$ constraint_name替换为动态“scma_constraint”。 变化

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


"alter table  hr.hr ENABLE constraint scma_constraint;"

4 个答案:

答案 0 :(得分:1)

String.replace()

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

答案 1 :(得分: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

replace()方法返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar(不支持regexp)

replaceAll()方法也是这样,但是在regexp的支持下。

如果需要,请更准确地编辑您的问题。

答案 2 :(得分:0)

如果要替换所有匹配项,请使用replaceAll()方法,您需要转义特殊字符,例如美元,因为replaceAll()获取正则表达式作为第一个参数,如果您编写"$owner"它表示您的字符串必须以"owner"开头。

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

答案 3 :(得分:0)

String上的replaceAll方法应该可以解决问题。首先将所有键值对存储在Map中,然后执行以下操作:

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

应该直截了当地实施。