1

2 つの方法が考えられます。1 つ目は、文字列自体を操作する方法です。最後の "/" より前のすべてを取り除きます。または、URI を使用して File オブジェクトを取得してから、query_info().get_display_name() を呼び出すこともできます。

1 つ目は正しくないように感じますが、2 つ目は 2 つのオブジェクトが作成されます。ここに従うべきベストプラクティスは何ですか?

4

1 に答える 1

4

2番目の方法(GLib.Fileを使用)はおそらく最も堅牢ですが...

持っているものが実際にはパスであり、URIではない場合(たとえば、file:/// home / foo/barではなく/home/ foo / bar)、GLib.Path.get_basenameを使用できます。

GLib.Path.get_basename ("/home/foo/bar");

URI内の文字はエンコードできるため(たとえば、スペースの代わりに%20)、実際にURIがある場合は、最初に文字列をエスケープ解除する必要があります。

GLib.Path.get_basename (GLib.Uri.unescape_string ("file:///home/foo/bar%20baz"));
于 2011-12-20T20:08:11.710 に答える