如何在Tcl中统计反斜杠数量并计算字符串路径的层级深度
Tcl统计路径层级的实现方法
方法1:通过分割路径直接统计层级(最简便)
直接用split命令按分隔符切割路径,返回的列表长度就是层级数,不需要额外计算分隔符:
# 示例路径(如果是反斜杠分隔,把下面的/换成\\即可) set path1 "Assb/vvv/jjj" set path2 "Sss/jjk/gyii/fff" # 统计层级 set depth1 [llength [split $path1 /]] set depth2 [llength [split $path2 /]] puts $depth1 # 输出:3 puts $depth2 # 输出:4
方法2:统计分隔符数量后计算层级
如果确实需要先统计分隔符数量再计算层级,用regexp匹配所有分隔符,返回的匹配次数就是分隔符数量,加1就是层级:
# 统计正斜杠数量的写法 set slash_count1 [regexp -all {/} $path1] set depth1 [expr {$slash_count1 + 1}] # 统计反斜杠数量的写法(注意反斜杠需要转义) set backslash_count [regexp -all {\\} $your_path] set depth [expr {$backslash_count + 1}]
注意:如果你的路径存在开头/结尾带分隔符的情况(比如
/a/b/c/),可以先调用string trim $path /去掉首尾的分隔符再统计,避免结果出错。
内容的提问来源于stack exchange,提问作者Casper_Rene
相关产品推荐
相关产品推荐

