2011-12-20 3 views
1

Я могу думать о двух путях: во-первых, я мог бы просто манипулировать самой струной; разделите все, что предшествует последнему «/». Или я мог бы использовать URI для получения объекта File, а затем вызвать query_info(). Get_display_name().Каков наилучший способ получить базовое имя файла из URI в Вала?

Первый не чувствует себя хорошо, а второй результат - в создании двух объектов. Какова наилучшая практика?

ответ

4

Второй способ (с использованием GLib.File), вероятно, самый надежный, но ...

Если то, что вы есть на самом деле путь, а не URI (например.,/Дома/Foo/бар не файл: /// главная/Foo/бар), вы можете просто использовать 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")); 
+0

+1 fo r то, что вы должны использовать, зависит от того, насколько необходима вам надежность, т. е. насколько вы можете доверять своим входным данным. Позвольте мне еще раз подчеркнуть этот комментарий, только менее тонко ;-) – ptomato

 Смежные вопросы

  • Нет связанных вопросов^_^