2012-07-02 96 views
0

我正在研究一個基於Qt的軟件,涉及一些密碼學。使用的只有三個散列算法被指定爲關於正則表達式和大小寫轉換使用Qt

SHA-256 
MD5 
SHA 

然而,我使用的API要求他們分別是在

sha256 
md5 
sha 

形式。 儘管我可以編寫一個混亂的函數來完成任務,但我知道這可以通過Qt中的正則表達式支持來簡化。請幫我拿出一個正則表達式來完成這個轉換任務。

這就是我使用正則表達式現在

if (hashType == QString("SHA")) { 
     return QString("sha"); 
    } 
    else if (hashType == QString("MD5")) { 
     return QString("md5"); 
    } 
    else if (hashType == QString("SHA-256")) { 
     return QString("sha256"); 
    } 
    else { 
     return hashType; 
    } 

回答

1

做我會說是矯枉過正這一點。你只需要:

return hashType.remove('-').toLower(); 
0

我懷疑你能達到與正則表達式一個簡單的代碼,因爲替換是通過調用QString::replace()對於我來說,你可以用最乾淨的方法是QMAP(value返回第二個參數做,如果沒有找到對象在地圖中)。

QMap<QString, QString> replacements; 
replacements["SHA"] = "sha"; 
replacements["MD5"] = "md5"; 
.... 

return replacements.value(hashType, hashType);