1

次の文字列があります。

  set operating_period          "1.86ns"    ; # set dominant default period , from create_clock command in sdc

ここから数字を出したい。したがって、結果は 1.86 になるはずです

TCLでそれを行う方法はありますか? スキャンを試みましたが、明らかに失敗します =( ...

4

2 に答える 2

2

スキャンを使用:

% set operating_period "1.86ns"
1.86ns
% set x [scan $operating_period %f]
1.86

http://www.tcl.tk/man/tcl8.6/TclCmd/scan.htm

http://www.tcl.tk/man/tcl8.6/TclCmd/format.htm

于 2013-10-25T11:51:06.840 に答える
1

場合によっては、特に不適切な形式のデータ (たとえば、人々が自由形式で書いたもの) を扱う場合、さまざまな手法を組み合わせてデータを抽出する必要があります。たとえば、 と の両方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 は現在、負の数に対応していません)。

于 2013-10-26T09:16:56.947 に答える