나는 문자열과 단어 목록을 가지고 있습니다. 해당 문자열의 각 단어를 검색하고 UPDATE DB와 UPD DB 같은 바로 가기로 바꿉니다. 다음은 내가 DROP의 DATABASE, DROP 절차, DROP,에서 삭제, VIEW를 작성, 테이블 만들기, 스키마를 작성, CREATE PROCEDURE에, DATABASE를 생성,보기, ALTER TABLE을 ALTER,키워드 검색 및 약어로 바꾸기
ALTER 데이터베이스 볼 필요가 단어의 목록입니다 TABLE, DROP VIEW, 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");
}
조건의 경우 다른 경우 내가 사용하지만 난 그 코드에 효율적인 방법입니다 생각하지 않습니다이다. 어느 누구도이 문제에 대해 저를 도울 수 있습니까? 나는 그들이 내게 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);
}
_i는 condition_ 다음 우리 것을 보여 주면 다른 경우에 사용. – Smit
* 어떤 사람들은 문제가 발생했을 때 "나는 정규식을 사용할 것입니다."라고 생각합니다. 이제는 두 가지 문제가 있습니다. - Jamie Zawinski –
if (payloadStr.contains ("UPDATE DATABASE")) { payloadStr = payloadStr.replace ("UPDATE DATABASE", "UPD DB"); 다른 \t \t} 경우 (payloadStr.contains() "데이터베이스 ALTER") { \t \t payloadStr = payloadStr.replace ("데이터베이스 ALTER", "ALTR DB"); \t} – user1771540