正则表达式替换字符串逗号的一部分

Posted

技术标签:

【中文标题】正则表达式替换字符串逗号的一部分【英文标题】:Regex replacing part of string comma 【发布时间】:2016-02-29 01:46:39 【问题描述】:

所以我有一个名为 'str' 的字符串(我正在使用 JQPlot,变量名如此简单)。

str 的格式是 'Date, Time, PointValue' 所以一个例子是:

12/12/2015, 14:07, 7.894

我在 JQPlot 上的 pointValue 存在四舍五入问题,因此我在荧光笔中使用 tooltipFormatString: " %.2f" 将所有值四舍五入到小数点后两位。然而,这会影响整个 'str' 变量并弄乱字符串的日期和时间部分。例如:124123231774.00, 7.89 - 这显然对 PointValue 有利,但对日期/时间不利。

所以我正在尝试编写一个仅在最后一个逗号之后格式化数据的正则表达式。所以它会忽略日期和时间,但会用'%.2f'格式化PointValue,所以它会四舍五入到小数点后两位。

我查看了以下内容: regex to remove multiple comma and spaces from string in javascript Replace the last comma in a string using Regular Expression

我仍然被困住,所以任何帮助和解释将不胜感激。我现在有这样的东西,显然行不通。

            function tooltipContentEditor(str, seriesIndex, pointIndex, plot) 
            str = str.replace(Expression Here);

            return "<span style='color:black;'><font style ='font-weight:900;'>" + plot.legend.labels[seriesIndex] + "</font><br>" + str + "</span>";
        ;

编辑:为什么我需要这个的原因是因为当我向图表添加更多数据系列时出现问题,从服务器获取的一些点值变得四舍五入并且不显示真正的价值。所以我试图格式化这个值,而不是让它从服务器推断出自己。即它将“7.899”舍入到“8”

【问题讨论】:

【参考方案1】:

尝试使用 String.prototype.replace()RegExp /\d\.\d+$/Number.toFixed()

var str = "12/12/2015, 14:07, 7.894";
var res = str.replace(/\d\.\d+$/, function(match) 
  return Number(match).toFixed(2)
);
console.log(res)

【讨论】:

我将“res”变量更改为“str”并删除了您定义的“str”变量。现在是的,它确实正确地将其四舍五入到小数点后两位,但是我仍然遇到日期/时间问题:它实际上现在以科学计数法显示:1.4566E+12, 8.14 - 8.14 是点值。我还删除了 tooltipFormatstring - 关于日期/时间的任何想法? @Nomm 查看更新后的帖子,在RegExp 处使用\. 转义. 字符,它应该只匹配输入字符串末尾的数字 仍然产生与我的第一条评论相同的问题。我会尝试多玩一点,看看我是否也能解决这个问题。 @Nomm “仍然产生与我的第一条评论相同的问题。” 你能创建一个 jsfiddle jsfiddle.net 来演示吗? 制作 JSFiddle 确实“解决了问题”。这意味着像上面那样定义变量'str'只会影响字符串中的最后一个数字,但是我现在觉得它可能是服务器本身或其他东西的问题。我会做更多的挖掘并发布我的发现。

以上是关于正则表达式替换字符串逗号的一部分的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 正则表达式替换用逗号包围的字符串的多次出现

用记事本++中的正则表达式替换引号中的所有逗号

正则表达式 - 如果模式匹配,则替换双引号之间的字符(逗号)

利用notepad++正则表达式将 多个空格 替换为一个逗号

利用notepad++正则表达式将 多个空格 替换为一个逗号

正则表达式逗号不表达