我的电话号码是:
0123456789
我想让它们看起来像
01 23 45 67 89
到目前为止,添加零与paste0
函数没什么关系,但我想要比嵌套paste0
和substr
的长链更简单一些。正则表达式每两位数读一次可能是可能的,但我不知道如何实现它。
答案 0 :(得分:1)
您可以使用(.{2})
替换正则表达式\\1
。请注意,还存在尾随空白问题,因为我们不希望在字符串末尾添加额外的空间用于具有偶数位数的输入。为了解决这个问题,我们可以从替换后的字符串中删除尾随空格。
x <- '0123456789'
y <- sub("\\s+$", "", gsub('(.{2})', '\\1 ', x))
y
[1] "01 23 45 67 89"
答案 1 :(得分:0)
这是一个比蒂姆更重要的解决方案,但你可以用dplyr
和stringr
来做这样的事情
library(dplyr)
library(stringr)
original_string %>%
paste0(0, .) %>% # add 0 to the head
str_replace_all("(.{2})", "\\1 ") %>% # insert spaces after every to digits
str_trim() # remove the space in the end if it's there
答案 2 :(得分:0)
没有正则表达式:
x <- "0123456789"
formatC(as.numeric(x), big.mark = " ", big.interval = 2,
format = "d", flag = "0", width = nchar(x))
#[1] "01 23 45 67 89"