glib下C中是否可以获取URL片段参数?
我有一个类似
file://localhost/home/me/notepad.txt#line=100,2
的网址
获取 url 末尾指定的参数的最佳方式是什么?
没有一个 GLib 函数可以满足您的要求。如果您可以使用 libsoup (也是 GNOME 堆栈的一部分),那么您可以使用
SoupURI
:
g_autoptr(SoupURI) uri = soup_uri_new (uri_string);
const gchar *fragment = soup_uri_get_fragment (uri);
这会将
fragment
设置为 line=100,2
。您必须手动进一步解析片段格式。 g_strsplit()
对此很有用。
您还可以查看 gnome-terminalterminal-nautilus.c 文件中的函数 parse_sftp_uri。 它可以轻松适应通用 URI。
自 GLib 2.66(2020 年 9 月 10 日发布)起,可以使用 GUri 解析 uri,例如。 g_uri_parse()
大多数其他答案的日期都在 2020 年之前,这就是为什么他们说这是不可能的。
不确定您是否要解析 notepad.txt#line=100,2 或 #line=100,2,不过我的答案应该适用于这两种情况。
您可以使用
strrchr()
(man strrchr) 函数来获取字符串中最后一次出现的字符。
类似:
char *file;
file = strrchr(url, '/') + 1;