1

我可以想到两种方法:首先,我可以操纵字符串本身;删除最后一个“/”之前的所有内容。或者,我可以使用 URI 获取 File 对象,然后调用 query_info().get_display_name()。

第一个感觉不对,而第二个导致创建了两个对象。在这里遵循的最佳做法是什么?

4

1 回答 1

4

第二种方式(使用 GLib.File)可能是最强大的,但是......

如果你真的是一个路径,而不是一个 URI(例如,/home/foo/bar 不是 file:///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 回答