0

私は、いくつかの暗号化を含む Qt ベースのソフトウェアに取り組んでいます。使用される 3 つのハッシュ アルゴリズムのみが次のように指定されています。

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オブジェクトがマップに見つからない場合は2番目の引数を返します)。

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

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