удалить последний путь и дублировать новый последний - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно разделить элемент для пути, например

/Users/i0564454/go/src/projectA/node

Мне нужно, в конце концов, это будет так

/Users/i0564454/go/src/projectA/projectA

все то же самое, за исключением remove последнего элемента и дублирования (нового) последнего элемента

Может ли путь к файлу помочь без слишком большого количества итераций?https://gowalker.org/path/filepath

1 Ответ

0 голосов
/ 25 октября 2018

Это возможно и со стандартной библиотекой.Вы можете использовать / объединить:

  • path.Dir(), чтобы получить папку (удалить последний элемент)
  • path.Base() дляполучить последний элемент
  • и path.Join() для объединения элементов пути.

Без проверки ошибок (например, если переданный путь содержит папки), следующая функцияделает то, что вы хотите:

func convert(s string) string {
    dir := path.Dir(s)
    return path.Join(dir, path.Base(dir))
}

Тестирование:

fmt.Println(convert("/Users/i0564454/go/src/projectA/node"))

Вывод (попробуйте на Go Playground ).

/Users/i0564454/go/src/projectA/projectA

Обратите внимание, что пакет path обрабатывает разделенные слешем пути.Если вам нужно / нужно поддерживать пути, специфичные для ОС, используйте идентичные функции пакета path/filepath.

...