-6

文字列と単語のリストがあります。その文字列内の各単語を検索し、その単語を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);
            }
4

2 に答える 2