正则表达式 – 如何用空格分隔数千

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何用空格分隔数千前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Comma separator for numbers in R?                                    3个
我想格式化数字,以便每千个应该用空格分隔.

我尝试过的:

library(magrittr)
addSpaceSep <- function(x) {
  x %>% 
    as.character %>% 
    strsplit(split = NULL) %>% 
    unlist %>% 
    rev %>% 
    split(ceiling(seq_along(.) / 3)) %>% 
    lapply(paste,collapse = "") %>% 
    paste(collapse = " ") %>% 
    strsplit(split = NULL) %>% 
    unlist %>% 
    rev %>% 
    paste(collapse = "")
}

> sapply(c(1,12,123,1234,12345,123456,1234567),addSpaceSep)
[1] "1"         "12"        "123"       "1 234"     "12 345"    "123 456"   "123 456"  
[8] "1 234 567"
> sapply(c(1,10,100,1000,10000,100000,1000000),addSpaceSep)
[1] "1"      "10"     "100"    "1 000"  "10 000" "1e +05" "1e +06"

写这个临时功能我感觉非常糟糕,但由于我没有掌握正则表达式,所以这是我发现它的唯一方法.当然,如果数字以科学格式转换,它将无法工作.

解决方法

这似乎更适合format()函数,而不是打扰正则表达式. format()函数用于格式化数字

format(c(1,big.mark=" ",trim=TRUE)
# [1] "1"         "12"        "123"       "1 234"     "12 345"    "123 456"  
# [7] "123 456"   "1 234 567"
format(c(1,scientific=FALSE,trim=TRUE)
# [1] "1"         "10"        "100"       "1 000"     "10 000"    "100 000"  
# [7] "1 000 000"

猜你在找的正则表达式相关文章