ZBLOG

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

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

示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. "path/filepath"
  5. "strings"
  6. )
  7. func isEqualPath(p1, p2 string) bool {
  8. // 将路径标准化处理
  9. p1 = filepath.Clean(p1)
  10. p2 = filepath.Clean(p2)
  11. // 对于 Windows 平台,忽略大小写
  12. if strings.HasPrefix(p1, "C:") && strings.HasPrefix(p2, "C:") {
  13. return strings.EqualFold(p1, p2)
  14. }
  15. // 直接比较两个路径
  16. return p1 == p2
  17. }
  18. func main() {
  19. fmt.Println(isEqualPath("c:\\abc", "c:/ABC")) // true
  20. fmt.Println(isEqualPath("/root/dir", "/ROOT/DIR")) // true
  21. fmt.Println(isEqualPath("/path/to/file.txt", "/path/to/folder/")) // false
  22. }

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?