ZBLOG

golang 如何判断两个路径是否相等,要支持 c:\abc c:/ABC 这样的路径适配,上述两个路径对于windows是相等的

在 Golang 中使用 filepath 包来处理路径问题,其中有一个函数叫做 filepath.Clean() 可以将一个路径标准化处理。然后我们可以直接通过字符串比较的方式判断两个路径是否相等。

示例代码:

package main

import (
    "fmt"
    "path/filepath"
    "strings"
)

func isEqualPath(p1, p2 string) bool {
    // 将路径标准化处理
    p1 = filepath.Clean(p1)
    p2 = filepath.Clean(p2)

    // 对于 Windows 平台,忽略大小写
    if strings.HasPrefix(p1, "C:") && strings.HasPrefix(p2, "C:") {
        return strings.EqualFold(p1, p2)
    }

    // 直接比较两个路径
    return p1 == p2
}

func main() {
    fmt.Println(isEqualPath("c:\\abc", "c:/ABC")) // true
    fmt.Println(isEqualPath("/root/dir", "/ROOT/DIR")) // true
    fmt.Println(isEqualPath("/path/to/file.txt", "/path/to/folder/")) // false
}

注意:Windows 平台需要忽略路径的大小写,因此需要使用 strings.EqualFold() 函数进行比较。其他平台则不需要。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1947

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?