1

非常に単純なコードを書こうとしていますが、tcl がうまく機能しません。コードに欠けている非常に単純なエラーがあると想像することしかできませんが、それが何であるかまったくわかりません。私はとてもイライラしています!!

私のコードは次のとおりです...

proc substitution {stringToSub} {
   set afterSub $stringToSub
   regsub {^.*?/projects} "$stringToSub" "//Path/projects" afterSub
   regsub {C:/projects} "$stringToSub" "//Path/projects" afterSub
   return $afterSub
}

puts "[substitution /projects] "
puts "[substitution C:/projects] "

置換は 2 番目の式では正常に機能しますが、最初の式では機能しません。何故ですか??私も使ってみました

regsub {^/projects} "$stringToSub" "//Path/projects" afterSub

regsub {/projects} "$stringToSub" "//Path/projects" afterSub

しかし、どちらも機能していません。何が起こっている??

4

3 に答える 3

1

問題は、regsub操作の 2 回目の使用が、最初の使用からの置換値を上書きしているregsubことです。

コードを次のように単純化できます。

proc substitution {stringToSub} {
    return [regsub {^.*?/projects} $stringToSub "//Path/projects"]
}
于 2013-08-04T10:21:17.363 に答える