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

有时,在处理格式不正确的数据(例如,任何由人们自由编写的数据)时,您必须使用多种技术来提取数据。例如,您可以同时使用regexpscan

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 回答