我有以下字符串:
set operating_period "1.86ns" ; # set dominant default period , from create_clock command in sdc
我想从中得到这个数字。所以结果应该是 1.86
有任何建议如何在TCL中做到这一点? 我试过扫描,但显然我失败=(...
答案 0 :(得分:2)
使用扫描:
% set operating_period "1.86ns"
1.86ns
% set x [scan $operating_period %f]
1.86
答案 1 :(得分: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以获得最佳结果(例如,当前现在不会处理负数)。