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

Regex 关于正则表达式和使用Qt的大小写转换,regex,qt,Regex,Qt,我正在开发一个基于Qt的软件,它涉及一些加密技术。仅使用的三种哈希算法指定为 SHA-256 MD5 SHA 但是,我正在使用的API要求它们采用 sha256 md5 sha 分别。 尽管我可以编写一个凌乱的函数来完成一些事情,但我知道这可以通过Qt中的正则表达式支持来简化。请帮我想出一个正则表达式来完成这个转换任务 这就是我现在正在做的 if (hashType == QString("SHA")) { return QString("sha"); } e

我正在开发一个基于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;
    }

我想说使用正则表达式在这方面太过分了。你只需要:

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

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

QMap替换;
替换[“SHA”]=“SHA”;
替换[“MD5”]=“MD5”;
....
返回replacements.value(hashType,hashType);
 QMap<QString, QString> replacements;
 replacements["SHA"] = "sha";
 replacements["MD5"] = "md5";
 ....

 return replacements.value(hashType, hashType);