2013-11-04 103 views
1

我有一個關於在TCL中使用string map的問題。 有沒有辦法檢測這個函數何時改變了映射字符串的前一個值? 例如,在這種情況下:TCL:檢測字符串映射替換

set location "default_user: admin" 
set new_user "user" 
set new_location [string map [list "admin" $new_user] $location] 

在這種情況下,我想知道,如果new_locationlocation不同的值(不比較兩個變量,也許還有一個更優雅的方式)。 我的真實情況比這個更復雜,我有一個html文件內容的變量,我想用另一個特定值替代另一個變量,或者如果沒有替換,我想從其他變量讀取。

感謝您的幫助,我希望在上面的例子中一切都清楚。

回答

2

string map函數並不意味着返回的替換次數。爲了得到可能使用的替換次數regsub -all函數返回值。您也可以使用string first來評估string map之前的值,以瞭解是否存在期望值的可變行。

+0

謝謝Chpock,你是對的。我現在試圖使用regexp來解決這個問題(爲了檢查替換之前是否有模式),並且首先使用字符串也是一個不錯的選擇,很好理解。 我認爲用字符串映射在單個語句中進行替換是不可能的。 – estradjs