【发布时间】:2013-04-27 01:50:06
【问题描述】:
我有一个字符串和单词列表。我想搜索该字符串中的每个单词并将该单词替换为任何快捷方式,例如将 UPDATE DATABASE 更新为 UPD DB。 以下是我需要查找的单词列表
更改数据库、更改表、更改视图、创建数据库、创建过程、创建模式、创建表、创建视图、删除、删除数据库、删除过程、删除表、删除视图、更新数据库。
这是我的代码 ===>
if(payloadStr.contains("UPDATE DATABASE")){
payloadStr = payloadStr.replace("UPDATE DATABASE","UPD DB");
} else if(payloadStr.contains("ALTER DATABASE")) {
payloadStr = payloadStr.replace("ALTER DATABASE", "ALTR DB");
}
我使用了 if else if 条件,但我认为这不是一种有效的编码方式。任何人都可以在这个问题上帮助我。我问过我的朋友,他们告诉我使用正则表达式,但我觉得正则表达式对我来说很复杂。
以下是我案例的答案:
String[] words = { "UPDATE DATABASE", "ALTER DATABASE",
"ALTER TABLE", "ALTER VIEW", "CREATE DATABASE",
"CREATE PROCEDURE", "CREATE SCHEMA", "CREATE TABLE",
"CREATE VIEW", "DELETE FROM", "DROP DATABASE",
"DROP PROCEDURE", "DROP TABLE", "DROP VIEW" };
String[] replaceWith = { "UPD DB", "ALTR DB", "ALTR TBL",
"ALTR VW", "CRT DB", "CRT PRCR", "CRT SCHM", "CRT TBL",
"CRT VW", "DEL FRM", "DRP DB", "DROP PRCR", "DRP TBL",
"DRP VW" };
for (int i = 0; i < words.length; i++) {
payloadStr = payloadStr.replaceAll(words[i], replaceWith[i]);
getLogger().debug(
"SQL Statement in Message. Message Modified To Avoid Layer-7 Rejection: "
+ payloadStr);
}
【问题讨论】:
-
我用了 if else if 条件然后给我们看。
-
有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。 -- Jamie Zawinski
-
这是我的代码 ===> if(payloadStr.contains("UPDATE DATABASE")){ payloadStr = payloadStr.replace("UPDATE DATABASE","UPD DB"); } else if(payloadStr.contains("ALTER DATABASE")) { payloadStr = payloadStr.replace("ALTER DATABASE", "ALTR DB"); }
-
感谢所有回复的人
-
@user1771540 请点击edit 将此注释代码编辑到您的原始帖子中。注释代码不可读。如果我们更好地了解您想要实现的目标,那么我们将很容易为您提供更好的帮助。
标签: java regex replace contain