在 Vala 中从 URI 获取文件基本名的最佳方法是什么?

发布于 2024-12-22 15:19:55 字数 173 浏览 1 评论 0原文

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

第一个感觉不对,而第二个则导致创建两个对象。这里应该遵循的最佳实践是什么?

I can think of two ways: first, I could just manipulate the string itself; strip everything that precedes the last "/". Or, I could use the URI to get a File object, then call query_info().get_display_name().

The first doesn't feel right, while the second results in two objects being created. What is the best practice to follow here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橘和柠 2024-12-29 15:19:55

第二种方式(使用 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"));

The second way (using GLib.File) is probably the most robust, but...

If what you have is really a path, not a URI (e.g.., /home/foo/bar not file:///home/foo/bar) you can just use GLib.Path.get_basename:

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

Because characters in a URI can be encoded (e.g., %20 instead of a space), if you really have a URI you may need to unescape the string first:

GLib.Path.get_basename (GLib.Uri.unescape_string ("file:///home/foo/bar%20baz"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文