2011-11-15 67 views
0

對於一個字段name我有幾個正則表達式,如果它匹配,則會對字段進行一些更改。執行正則表達式和替換列表的最佳方式是什麼?

現在這裏是我做的僞代碼:

if (name matches regexp1) 
    make change1 to name 
elsif (name matches regexp2) 
    make change2 to name 
elsif (name matches regexp3) 
    make change3 to name 

我有過這樣的事20來檢查。有沒有更好的方法來編碼?

+1

你總是在每個分支做change1嗎?還是僅僅是一個錯字?如果沒有,你可以把所有的正則表達式放入一個列表中,對列表中的每個項目使用一個循環結構來驗證'name',並且一旦匹配,就進行更改並離開循環。 –

+0

這是一個錯字:)感謝你的解決方案將更清潔(把正則表達式和替換在哈希中第一) – Jacob

+0

如果你只是簡單地替換名稱,你可以使用哈希映射。 –

回答

0

我願意做它像這樣

change1(name) if name.match(/some_regex_one/) 
change2(name) if name.match(/some_regex_two/) 
change3(name) if name.match(/some_regex_three/) 

這樣,你仍然可以輕鬆地掃描,查看所有20個不同regexs,並與他們一起去改變。

可能不是最有效的方式,但它可能是最可讀的方式。