我正在使用一些由比較字符串的switch語句組成的Java代碼。在學習之前,大約有5個案例需要添加更多。正則表達式if語句與開關語句混合使用
事實上,我需要添加64個更多的案例(4組16個相似的拼寫值),並且由於字符串的性質,希望使用正則表達式不需要太多的語句。例如,第一組可能的值是「Section ## Stuff」,第二組「Section ## Stuff XYZ」等等;其中##是任意數量的1和16
之間爲了闡明而不是添加的情況下,對於每個字符串,我想正則表達式出類型,然後調用適當的功能等
雖然這一切工作正常,我擔心另一個開發人員很難理解發生了什麼,因爲我基本上已經組合了正則表達式if語句和switch語句。我也不能忍受有非常大的開關語句列表。
什麼是更好的選擇(可讀性vs口才等),是否有可能以某種方式使用正則表達式與我的switch語句?此外,我不認爲會有任何顯着的性能影響,但如果有的話,這將是很高興知道。 :)
下面的代碼是一個例子,因爲我無法提供真實的代碼。
我想要做什麼:
if (str.matches("Section ([1-9]|1[0-6]) Stuff") {
//do something with the number provided in string
} else if (str.matches("Section ([1-9]|1[0-6]) Stuff 2") {
//do something else with the number provided in the string
} else {
switch (str) {
case PARAM_VALUE_1:
doSomething1();
break;
case PARAM_VALUE_2:
doSomething2();
break;
...
...
default:
break;
}
}
OR -
switch (str) { case PARAM_VALUE_1: doSomething1(); break; case PARAM_VALUE_2: doSomething2(); break; ... ... case "Section 1 Stuff": //do something for section 1 break; case "Section 2 Stuff": //do something for section 2 break; ... ... (64 cases later) default: break; } }
注:我不能重新設計串進來的方式;它來自另一個子系統,它就是這樣。
感謝您的幫助!
你是否真的需要爲每個'case'執行根本不同的代碼,或者是否存在需要由不同情況執行的代碼模式? – entpnerd
從根本上不同。就目前而言,我剛剛使用了更詳細的非正則表達式版本,並且它似乎工作正常。我更加好奇什麼更標準。 – Southpaw