r语言 - 如何在字符串中交换子字符串?



让我们假设我有以下字符串:

x <-  "22-03-23"

给定这个和给定任何其他具有相同格式的类似字符串,我希望能够交换"22"的位置与"23";以自动的方式。

因此,结果应该是:
"23-03-22"

代码需要从这些数字中抽象出来,并以相同的格式在任何其他场景中工作。

有谁能帮我一下吗?

你可以这样做:

x <- c("22-03-23", "01-04-20")
gsub("(.*)(-.*-)(.*)", "\3\2\1", x)
#[1] "23-03-22" "20-04-01"

"-"上分割,然后反向并将粘贴在一起,或者使用as。:

x <-  c("22-03-23", "01-04-20")
sapply(strsplit(x, split = "-", fixed = TRUE), function(i) paste(rev(i), collapse = "-"))
# [1] "23-03-22" "20-04-01"
as.Date(x, format = "%d-%m-%y")
# [1] "2023-03-22" "2020-04-01"

如果需要,我们可以设置打印日期的格式:

format(as.Date(x, format = "%d-%m-%y"), "%y-%m-%d")
# [1] "23-03-22" "20-04-01"
library(dplyr)
x <- "22-03-23"
result <- x %>%
str_split("-") %>%
unlist() %>%
rev() %>%
paste(collapse = "-")
print(result)  # prints "23-03-22"
# Using base R
x <- "22-03-23"
parts <- strsplit(x, "-")[[1]]
result <- paste(rev(parts), collapse = "-")
print(result)  # prints "23-03-22"