关于使用Qt的正则表达式和大小写转换

时间:2012-07-02 10:05:34

标签: regex 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;
    }

2 个答案:

答案 0 :(得分:1)

我认为使用正则表达式对此有点过分。你只需要:

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

答案 1 :(得分:0)

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

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

 return replacements.value(hashType, hashType);