計算兩個絕對路徑的相對路徑(go)
阿新 • • 發佈:2018-11-05
寫一個函式計算出兩個絕對路徑(如path1 = /a/b/c/d, path2 = /a/e/f)的相對路徑為 ../../e/f
func getRelativePath(path1, path2 string) (string, error) { if path1 == "" || path2 == "" { return "", errors.New("絕對路徑不可以為空") } arr1 := strings.Split(path1[1:], "/") arr2 := strings.Split(path2[1:], "/") depth := 0 for i := 0; i < len(arr1) && i < len(arr2); i++ { if arr1[i] == arr2[i] { depth ++ } else { break } } prefix := "" if len(arr1) - depth - 1 <= 0 { prefix = "./" } else { for i := len(arr1) - depth - 1; i > 0; i -- { prefix += "../" } } fmt.Println(depth) if len(arr2) - depth > 0 { prefix += strings.Join(arr2[depth:], "/") } return prefix, nil }