0

我正在开发一个涉及一些密码学的基于 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;
    }
4

2 回答 2

1

我会说为此使用正则表达式是矫枉过正的。您只需:

return hashType.remove('-').toLower();
于 2012-07-02T10:44:15.490 回答
0

我怀疑您是否可以使用正则表达式实现更简单的代码,因为替换是通过调用QString::replace() 对我来说最干净的方法是 QMap (value如果在地图中找不到对象,则返回第二个参数)。

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

 return replacements.value(hashType, hashType);
于 2012-07-02T11:38:15.360 回答