假設我有一個字串,為簡單起見,可能是“啟用 && 信號”。
我想將此字串轉換為 tcl 中的標準 && 操作,這樣 Enable && Signal 將在任何值為 false 時回傳 0,僅當兩者都為 true 時回傳 1。
有沒有一種簡單的方法可以做到這一點,就我而言,我需要一個通用方法,其中引數的數量可以是任意的,并執行邏輯/關系操作,例如 && || == <= > != 等等
任何幫助和見解將不勝感激。
謝謝
我最初嘗試將引數拆分為條件串列和資料串列,但無法處理操作的優先級。like == 需要先進行 n^n 組合的 && 操作
uj5u.com熱心網友回復:
我假設在您的示例中,Enable 和 Signal 是 Tcl 變數。因此,能夠將字串傳遞給所需要的expr只是在所有識別符號前面加上一個“$”。這可以通過regsub以下方式完成:
set str "Enable && Signal"
regsub -all {\m[A-Za-z]\w*\M} $str {$&} expr
set result [expr $expr]
由于 \m\M,這將正確地留下像 1e3 這樣的數字。但是,如果您還希望能夠使用函式,例如sin(x). 如果這也是一項要求,則負前瞻可能會有所幫助:
set str "sin(x) * cos(y)"
regsub -all {\m[A-Za-z]\w*\M(?!\()} $str {$&} expr
puts $expr
這會產生:sin($x) * cos($y)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/527673.html
標籤:正则表达式字典分裂tcl
