1

Qt/KDE を使用してアプリケーションを開発しています。;このためのコードを書いている間、( delimited)のような値を含む QString を読み取る必要があります

<http://example.com/example.ext.torrent>; rel=describedby; type="application/x-bittorrent"; name="differentname.ext"

rel、type、name などのすべての属性を別の .xml に読み込む必要がありますQString。私がこれまでに取ったアプローチはこのようなものです

if (line.contains("describedby")) {
        m_reltype = "describedby" ;
    }
    if (line.contains("duplicate")) {
        m_reltype = "duplicate";
    }

つまり、属性の存在 (値ではなく) だけに煩わされる必要がある場合は、手動でテキストを探し、属性が存在するかどうかを設定します。ただし、このアプローチは、実際の値を に格納する必要がある「type」や name などの属性では失敗しますQString。文字列全体を区切り文字で分割し、属性またはその値を検索することでこれを実行できることはわかってい;ますが、よりクリーンで効率的な方法があるかどうかを知りたかったのです。

4

2 に答える 2

2

私が理解しているように、データは必ずしも URL ではありません。そう、

1: 文字列を分割する

2: 部分文字列ごとに、識別子を値から分離します。

id = str.mid(0,str.indexOf("="));
value = str.mid(str.indexOf("=")+1);

正規表現を使用することもできます:

regexp = "^([a-z]+)\s*=\s*(.*)$";
id = \1 of the regexp;
value = \2 of the regexp;
于 2012-06-11T18:50:18.810 に答える
2

rel、type、name などのすべての属性を別の QString に読み込む必要があります。

この文字列が常に URL になるという保証はありますか?

よりクリーンで効率的な方法があるかどうかを知りたかったのです。

車輪を再発明しないでください!QURL::queryItemsこれらのクエリ変数を解析し、名前と値のペアのマップを返す which を使用できます。

ただし、文字列が適切な形式の URL であることを確認してください (QURL拒否されないようにするため)。

于 2012-06-11T18:46:23.770 に答える