次の文字列があります。
set operating_period "1.86ns" ; # set dominant default period , from create_clock command in sdc
ここから数字を出したい。したがって、結果は 1.86 になるはずです
TCLでそれを行う方法はありますか? スキャンを試みましたが、明らかに失敗します =( ...
次の文字列があります。
set operating_period "1.86ns" ; # set dominant default period , from create_clock command in sdc
ここから数字を出したい。したがって、結果は 1.86 になるはずです
TCLでそれを行う方法はありますか? スキャンを試みましたが、明らかに失敗します =( ...
スキャンを使用:
% set operating_period "1.86ns"
1.86ns
% set x [scan $operating_period %f]
1.86
場合によっては、特に不適切な形式のデータ (たとえば、人々が自由形式で書いたもの) を扱う場合、さまざまな手法を組み合わせてデータを抽出する必要があります。たとえば、 と の両方regexp
を使用できscan
ます。
set inputString "wow yet 183.326ns another float"
if {[scan [regexp -inline {[\d.]+ns} $inputString] "%f" value] == 1} {
# Found something! It's in $value now
}
はregexp
抽出を行い (-inline
素晴らしいです。regexp
一致したものを返します)、見つかったものから「意味を抽出」し、そもそもそこに浮動小数点数があったと仮定して、適切scan
な浮動小数点数を に格納します。$value
最良の結果を得るには、RE を微調整する必要がある場合があります (たとえば、現在の RE は現在、負の数に対応していません)。