2016-10-12 2 views

ответ

1

Используйте функцию filepath.ToSlash, чтобы заменить разделитель пути операционной системы на «/» в пути.

В Windows функция возвращает strings.Replace(path, string(filepath.Separator), "/", -1). В других операционных системах функция возвращает аргумент path как есть.

+0

Большое спасибо! Это касается именно моей проблемы. – kOssi

4

Вы не избежали обратной косой черты в string. Следующий код работает:

package main 

import (
    "fmt" 
    "strings" 
) 

func main() { 
    string := "P:\\Project\\project-name/content/topic/" 
    fmt.Println(strings.Replace(string, "\\", "/", -1)) 
} 

Играть это на детской площадке: https://play.golang.org/p/T3XE5uiIkk

0

Вы также можете использовать обратные кавычки (`), чтобы создать необработанную строку:

func main() { 
    string := `P:\Project\project-name/content/topic/` 
    fmt.Println(strings.Replace(string, "\\", "/", -1)) 
} 

Обратите внимание, что сырьевая строка выше, все еще будет иметь внутреннее представление как

"P:\\Project\\project-name/content/topic/" 

Следовательно, необходимо использовать "\\" в функции strings.Replace.

+0

Можно ли просто преобразовать литеральную строку в необработанную строку программно перед заменой? – kOssi

+0

@kOssi необработанная строка - это просто способ представлять буквальную строку, не требуя этих надоедливых двойных обратных косых черт. Это то, что означает абхик, когда он говорит, что у них одинаковое внутреннее представление. Они не два разных типа, или даже две разные строки. Это синтаксический сахар, чтобы облегчить работу программиста. –

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