我有以下字符串:
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 现在无法处理负数)。