我的时间戳在表格中
0992006 09:00
Run Code Online (Sandbox Code Playgroud)
我需要删除前导零以获取此表单:
992006 9:00
Run Code Online (Sandbox Code Playgroud)
这是我现在使用的代码,它不会删除前导零:
prediction$TIMESTAMP <- as.character(format(prediction$TIMESTAMP, '%j%Y %H:%M'))
Run Code Online (Sandbox Code Playgroud)
最简单的方法是创建自己的边界,断言字符串的开头或空格先行.
gsub('(^| )0+', '\\1', '0992006 09:00')
# [1] "992006 9:00"
Run Code Online (Sandbox Code Playgroud)
您也可以使用诀窍进行替换豁免.\K重置报告的匹配的起始点,不再包括任何以前消耗的字符.
gsub('(^| )\\K0+', '', '0992006 09:00', perl=T)
# [1] "992006 9:00"
Run Code Online (Sandbox Code Playgroud)
或者你可以使用sub和匹配,直到第二组前导零.
sub('^0+([0-9]+ )0+', '\\1', '0992006 09:00')
# [1] "992006 9:00"
Run Code Online (Sandbox Code Playgroud)
并且为了涵盖所有可能性,如果您知道您将拥有类似的格式0992006 00:00,只需+在正则表达式中从零中删除量词,这样它只会删除第一个前导零.
这是使用lookbehind的另一种选择
gsub("(^0)|(?<=\\s)0", "", "0992006 09:00", perl = TRUE)
## [1] "992006 9:00"
Run Code Online (Sandbox Code Playgroud)
str1 <- "0992006 09:00"
gsub("(?<=^| )0+", "", str1, perl=TRUE)
#[1] "992006 9:00"
Run Code Online (Sandbox Code Playgroud)
对于下面的情况,它可能是:
str2 <- "0992006 00:00"
gsub("(?<=^| )0", "", str2, perl=TRUE)
#[1] "992006 0:00"
Run Code Online (Sandbox Code Playgroud)
这里的想法是look behind (?<=^| )0+用来匹配0s
如果它出现在字符串的开头
(?<=^
要么 |
如果它跟在一个空格之后 )0+
并替换参数的第二部分匹配0s的那些.""gsub
在第二个字符串中,hour并且minutes都是0's.因此,使用第一个code将导致:
gsub("(?<=^| )0+", "", str2, perl=TRUE)
#[1] "992006 :00"
Run Code Online (Sandbox Code Playgroud)
在这里,目前还不清楚OP会接受什么.所以,我想,如果还剩一个,那么不如在整个0之前删除整个s .所以,我将多个代码替换为一个代码并将其替换为.:00+0""
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |