文字列と単語のリストがあります。その文字列内の各単語を検索し、その単語をUPD DBへのUPDATE DATABASEなどのショートカットに置き換えたいと思います。以下は、私が探す必要がある単語のリストです
データベースの変更、テーブルの変更、ビューの変更、データベースの作成、プロシージャの作成、スキーマの作成、テーブルの作成、ビューの作成、削除元、データベースの削除、プロシージャの削除、テーブルの削除、ビューの削除、データベースの更新。
これは私のコードです===>
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 条件を使用しましたが、効率的なコーディング方法ではないと思います。誰でもこの問題で私を助けてくれませんか。これについて友人に尋ねたところ、REGEX を使用するように言われましたが、正規表現は複雑で理解しにくいと感じています。
以下は私の場合の答えです:
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);
}