更改字符串中数字的位数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改字符串中数字的位数相关的知识,希望对你有一定的参考价值。
我有一组字符串,所有字符串都有4位数字,例如:
“FTMS + c NSI Full ms [364.0000-391.0000]”
我想将所有数字转换为只有2位数,以便它成为
“FTMS + c NSI Full ms [364.00-391.00]”
字符串没有特定的结构。有简单的一线解决方案吗?
答案
gsubfn
这仅使用一个简单的模式,该模式匹配表示具有小数的数字的字符串,将每个此类匹配转换为数字,并使用sprintf
格式化为2位小数。
library(gsubfn)
gsubfn("\d+\.\d+", ~ sprintf("%.2f", as.numeric(x)), s)
## [1] "FTMS + c NSI Full ms [364.00-391.00]"
基地R.
一个基本的解决方案是匹配要保留的部分,然后是剩余的数字,然后只保留要保留的部分。
gsub("(\d+\.\d{2})\d+", "\1", s)
## [1] "FTMS + c NSI Full ms [364.00-391.00]"
注意
输入是:
s <- "FTMS + c NSI Full ms [364.0000-391.0000]"
另一答案
这应该工作:
library(stringr)
x = "FTMS + c NSI Full ms [364.0000-391.0000]"
str_replace_all(x, "([0-9]+\.[0-9]{2})[0-9]+", "\1")
# [1] "FTMS + c NSI Full ms [364.00-391.00]"
我们寻找的模式
- 第一个捕获组:1个或多个数字,后跟“。”紧接着是2个数字
- 接下来是更多的数字
我们匹配上面描述的所有内容,并将其替换为第一个捕获组(第一个项目符号)。
以上是关于更改字符串中数字的位数的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 代码片段,Snippets,Gist