找回密码
 加入
搜索
查看: 1042|回复: 8

[网络通信] 【已解决】请教 时间正则

[复制链接]
发表于 2023-4-3 20:31:24 | 显示全部楼层 |阅读模式
本帖最后由 itqijian 于 2023-4-4 18:33 编辑

2 小时 9 分钟 6 秒
要求正则后结果 2:09:06  、 2:19:56
时间要补零,一个正则解决,技术不够,请教大佬们。
$nTime0 = "2 小时 9 分钟 6 秒"
$nTime1 = StringRegExpReplace($nTime0, "\W{4}", ":")
$nTime2 = StringRegExpReplace($nTime1, "\W{2}", "")
ConsoleWrite($nTime2)
发表于 2023-4-3 21:15:00 | 显示全部楼层
Local $sSource = '2 小时 09 分钟 06 秒'
MsgBox(0, '', StringRegExpReplace($sSource, '(\d+)\D+(\d+)\D+(\d+)\D*', '\1:\2:\3'))
 楼主| 发表于 2023-4-3 21:25:13 | 显示全部楼层

不好意思,原本的时间多了个零。
发表于 2023-4-4 01:20:43 | 显示全部楼层
Local $sSource = '2 小时 9 分钟 6 秒'
$strtemp = StringRegExpReplace($sSource, '(\d+)\D+(\d+)\D+(\d+)\D*', '\1:\2:\3')
$strtemp = StringRegExpReplace($strtemp,':(\d)(?=\D|$)', ':0\1')
MsgBox(0,'',$strtemp)

Local $sSource = '2 小时 19 分钟 56 秒'
$strtemp = StringRegExpReplace($sSource, '(\d+)\D+(\d+)\D+(\d+)\D*', '\1:\2:\3')
$strtemp = StringRegExpReplace($strtemp,':(\d)(?=\D|$)', ':0\1')
MsgBox(0,'',$strtemp)

ps:修改之前a大告知,如果正則一次不行,那就兩次搞定。
发表于 2023-4-4 08:12:38 | 显示全部楼层
补零应该是字符串格式化的工作,而不是正则要干的事情。
$nTime0 = "2 小时 9 分钟 6 秒"
$Tmp = StringRegExp($nTime0, "(\d+)\D+(\d+)\D+(\d+)\D*", 1)
ConsoleWrite(StringFormat("%01i:%02i:%02i",$Tmp[0] , $Tmp[1], $Tmp[2]) & @CRLF)
发表于 2023-4-4 08:20:34 | 显示全部楼层
换一个简单的正则也行。
$nTime0 = "2 小时 9 分钟 6 秒"
$Tmp = StringRegExp($nTime0, "\d+", 3)
ConsoleWrite(StringFormat("%01i:%02i:%02i",$Tmp[0] , $Tmp[1], $Tmp[2]) & @CRLF)
 楼主| 发表于 2023-4-4 18:34:54 | 显示全部楼层
gyp2000 发表于 2023-4-4 08:20
换一个简单的正则也行。
$nTime0 = "2 小时 9 分钟 6 秒"
$Tmp = StringRegExp($nTime0, "\d+", 3)

$Tmp[1], $Tmp[2]
如果没有小时时间,会错误。
发表于 2023-4-4 19:21:15 来自手机 | 显示全部楼层
itqijian 发表于 2023-4-4 18:34
$Tmp[1], $Tmp[2]
如果没有小时时间,会错误。

那就判断下数组的下标。如果只有2个元素就只格式化2个元素。
 楼主| 发表于 2023-4-4 19:28:05 | 显示全部楼层
gyp2000 发表于 2023-4-4 19:21
那就判断下数组的下标。如果只有2个元素就只格式化2个元素。

最初就是为了简化代码量,如果再加判断就本末倒置。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 16:07 , Processed in 0.072140 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表