更改字符串中数字的位数

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个数字
  • 接下来是更多的数字

我们匹配上面描述的所有内容,并将其替换为第一个捕获组(第一个项目符号)。

以上是关于更改字符串中数字的位数的主要内容,如果未能解决你的问题,请参考以下文章

从变量中按数字更改小数位 - JAVA [重复]

JavaScript - 代码片段,Snippets,Gist

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码

点后打印8位数