_my_ending
ファイル名に末尾を追加し、ファイル拡張子を変更しないコードを書き込もうとしています。
私が取得する必要があるものの例:
"test.bmp" -> "test_my_ending.bmp"
"test.foo.bar.bmp" -> "test.foo.bar_my_ending.bmp"
"test" -> "test_my_ending"
私はである程度の経験がPCRE
あり、それを使用するのは簡単な作業です。Qtの経験が不足しているため、最初に次のコードを作成しました。
QString new_string = old_string.replace(
QRegExp("^(.+?)(\\.[^.]+)?$"),
"\\1_my_ending\\2"
);
このコードは機能しません(まったく一致しません)、そして私はドキュメントで次のことを見つけました
欲張りでないマッチングは、個々の数量詞に適用することはできませんが、パターン内のすべての数量詞に適用できます。
+
ご覧のとおり、私の正規表現では、最初の数量詞の後に追加することで、最初の数量詞の貪欲さを減らそうとしまし?
た。これはではサポートされていませんQRegExp
。
これは私にとって本当に残念なことです。そのため、次の醜いが機能するコードを作成する必要があります。
//-- write regexp that matches only filenames with extension
QRegExp r = QRegExp("^(.+)(\\.[^.]+)$");
r.setMinimal(true);
QString new_string;
if (old_string.contains(r)){
//-- filename contains extension, so, insert ending just before it
new_string = old_string.replace(r, "\\1_my_ending\\2");
} else {
//-- filename does not contain extension, so, just append ending
new_string = old_string + time_add;
}
しかし、もっと良い解決策はありますか?私はQtが好きですが、Qtに見られるいくつかのことは落胆しているようです。