【已解决】请教 时间正则
本帖最后由 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)
Local $sSource = '2 小时 09 分钟 06 秒'
MsgBox(0, '', StringRegExpReplace($sSource, '(\d+)\D+(\d+)\D+(\d+)\D*', '\1:\2:\3'))
afan 发表于 2023-4-3 21:15
不好意思,原本的时间多了个零。 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大告知,如果正則一次不行,那就兩次搞定。 补零应该是字符串格式化的工作,而不是正则要干的事情。
$nTime0 = "2 小时 9 分钟 6 秒"
$Tmp = StringRegExp($nTime0, "(\d+)\D+(\d+)\D+(\d+)\D*", 1)
ConsoleWrite(StringFormat("%01i:%02i:%02i",$Tmp , $Tmp, $Tmp) & @CRLF) 换一个简单的正则也行。
$nTime0 = "2 小时 9 分钟 6 秒"
$Tmp = StringRegExp($nTime0, "\d+", 3)
ConsoleWrite(StringFormat("%01i:%02i:%02i",$Tmp , $Tmp, $Tmp) & @CRLF) gyp2000 发表于 2023-4-4 08:20
换一个简单的正则也行。
$nTime0 = "2 小时 9 分钟 6 秒"
$Tmp = StringRegExp($nTime0, "\d+", 3)
$Tmp, $Tmp
如果没有小时时间,会错误。 itqijian 发表于 2023-4-4 18:34
$Tmp, $Tmp
如果没有小时时间,会错误。
那就判断下数组的下标。如果只有2个元素就只格式化2个元素。 gyp2000 发表于 2023-4-4 19:21
那就判断下数组的下标。如果只有2个元素就只格式化2个元素。
最初就是为了简化代码量,如果再加判断就本末倒置。
页:
[1]