如何在TCL中分割字符串?实现日期字符串拆分获取月份和年份
TCL字符串拆分赋值操作方案
你可以通过以下两种常用方式实现需求:
方案1:分隔符拆分法(适合固定分隔符的规则字符串)
TCL内置split命令可按指定字符拆分字符串为列表,搭配lassign可快速将列表元素赋值给多个变量:
# 定义原始日期变量 set date_string "OCT-09-1956" # 按-拆分后直接赋值,中间的日字段用day占位,不需要时也可替换为_表示忽略 lassign [split $date_string "-"] month day year
执行后$month取值为OCT,$year取值为1956。
如果不想用lassign,也可以手动通过列表索引取值:
set date_parts [split $date_string "-"] set month [lindex $date_parts 0] set year [lindex $date_parts 2]
方案2:正则提取法(适合只需要提取目标字段的场景)
如果不需要处理中间的日字段,可以直接用正则表达式匹配提取目标值,无需拆分全量字段:
set date_string "OCT-09-1956" # 正则中两个分组分别捕获月份和年份,->为占位符承接完整匹配结果 regexp {^(\w+)-\d+-(\d+)$} $date_string -> month year
结果验证
执行以下代码可打印验证赋值结果:
puts $month puts $year # 输出: # OCT # 1956
内容的提问来源于stack exchange,提问作者Tim Scott
相关产品推荐
相关产品推荐

