Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离题如何使时尚编辑成为一行?_Javascript_Regex_Node.js - Fatal编程技术网

Javascript 离题如何使时尚编辑成为一行?

Javascript 离题如何使时尚编辑成为一行?,javascript,regex,node.js,Javascript,Regex,Node.js,我有一个文件,其中我必须更改一些符合特定规则的行 N1 N2 N3 r 其中,n1 n2和n3是数值介于0和1之间的数字(带小数) e、 g 1 0.67 0 r 0.66 5偏高 0 1 0.989 r 0.965慢 0.23 0.345 0.65 r 11CB 0.9 r 这些字符串必须替换为字符串值“0 r” 省略值为“1 r”的字符串 这个 这是我的输出 0R 0.66 5偏高 0R 0.965慢 0R 11CB 0R 它可以工作,而且速度非常快,但我想知道是否有可能找到一个更优雅的解决

我有一个文件,其中我必须更改一些符合特定规则的行

N1 N2 N3 r

其中,n1 n2和n3是数值介于0和1之间的数字(带小数)

e、 g

1 0.67 0 r

0.66 5偏高

0 1 0.989 r

0.965慢

0.23 0.345 0.65 r

11CB

0.9 r

这些字符串必须替换为字符串值“0 r” 省略值为“1 r”的字符串 这个

这是我的输出

0R

0.66 5偏高

0R

0.965慢

0R

11CB

0R

它可以工作,而且速度非常快,但我想知道是否有可能找到一个更优雅的解决方案来改变这些线路。。。建议

另外,我使用库来同步读写操作。
我做了一些研究,发现逐行阅读的解决方案非常有趣,但我注意到速度大幅放缓

您可以尝试以下模式:

var res = data.replace(/^(?!1 1 1)(?:(?:0(?:\.[0-9]*)?|1) ){3}r$/gm, '0 0 0 r');
详情:

该模式使用锚定
^
$
以及m修饰符来确保描述整条线

(?!11)
是一种消极的前瞻,可确保您不在案例1r中

0(?:\.[0-9]*)?|1
描述了可能的数字(零后面跟或不跟点后面跟或不跟数字,或1。)


然后我把它放在一组中,加上一个空格,重复三次,最后加上一个“r”。

你能把预期的输出也加上吗?这将使阅读更容易,而无需通过您的程序。您的RegExp可以接受
0。00r
这是正常行为吗?是的……不幸的是,它并不总是标记为零,行也可能以0.0到达,但没有最后的0。如果发现这些行的标准,我们可能会在+中更改*此问题似乎脱离主题,因为它属于codereview.stackexchange.com。不幸的是,阅读整个文件时,我注意到他丢失了起始行和结束行的概念,因此我使用了“\b”@初学者的运气:你说的有点奇怪,你确定这些行没有尾随空格吗?通常没有空格
var res = data.replace(/^(?!1 1 1)(?:(?:0(?:\.[0-9]*)?|1) ){3}r$/gm, '0 0 0 r');