我想检查一个给定的字符串是否有日期或时间。例如
1) "dfdsf 2014/01/02 dsfdsf"
2) "fgfffdbf 2014-01-02 dfsdfdfd"
3) "dfdfds 02/01/2014"
4) "02/2014/01 dffsdfsd"
5) "2014/01/02 00:30 sdgfsdgsdgvbds"
6) "02/2014/01 12:20:22 xcbfdgfdg"
7) "01:11:22 02/2014/01 sdgsdgs"
8) "00:30 2014-01-02 fdgfdgd"
所有这些字符串都包含日期或时间。我想构建一个测试/函数,将所有这8个字符串标记为"日期/时间"。
答案 0 :(得分:4)
我会使用' grepl',但是如果有一个字符串中包含看起来像日期的字符串,那么就会出现问题,但不是。请尝试以下示例:
strings <- c("dfdsf 2014/01/02 dsfdsf", "fgfffdbf 2014-01-02 dfsdfdfd", "dfdfds 02/01/2014", "02/2014/01 dffsdfsd", "2014/01/02 00:30 sdgfsdgsdgvbds", "02/2014/01 12:20:22 xcbfdgfdg", "01:11:22 02/2014/01 sdgsdgs", "00:30 2014-01-02 fdgfdgd", "NoDateHere")
findDates <- function(strings) {
pattern1 <- '[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]'
pattern2 <- '[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]'
pattern3 <- '[0-9][0-9]/[0-9][0-9][0-9][0-9]/[0-9][0-9]'
pattern4 <- '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
tdBool <- grepl(pattern1, strings) | grepl(pattern2, strings) | grepl(pattern3, strings) | grepl(pattern4, strings)
return(tdBool)
}
findDates(strings)