删除行首的字符,但从第 2 行开始
Posted
技术标签:
【中文标题】删除行首的字符,但从第 2 行开始【英文标题】:Remove char at beginning of line, but start at line 2 【发布时间】:2020-11-10 12:25:09 【问题描述】:我正在使用 nodejs 创建一个 .csv 文件。 该文件的内容来自多个数组。
我将 ,
替换为 ;
,因此 .csv 格式可以正常工作。
现在我有一个小问题:从我的 CSV 文件的第 2 行开始,我在每行的开头都有分号。
这是一个例子:
14-07-2020;intLAMi_IgnRate1;intLAMi_IgnRate2
;22:00:00;59.020397;48.343338;51.309185
现在,因为我需要使用 npm 包 replace-in-file
将 ,
替换为以下代码:
const replace = require('replace-in-file')
const options =
files: f,
from: [/,/g, /^;/g],
to: [';', ' ']
replace(options)
.then(() =>
resolve(true)
)
我的问题是,我对正则表达式不太满意。
上面的代码替换了所有,
,但似乎正则表达式/^;/g
不起作用
有人知道我的代码为什么不起作用吗?
【问题讨论】:
嗨弗洛里安!您是否尝试过使用标准的 javascriptreplaceAll
函数?这是一个相当简单的字符串操作,我不确定在这种情况下您是否需要担心正则表达式replaceAll(";", ",");
如果您确实想使用正则表达式,请务必使用编辑器检查您的表达式,例如: regex101.com
@nurnachman replaceAll
很新,大多数浏览器还没有。
node.js 中也不存在
@Barmar 记下,所以可以使用replace(/,/g, ";")
【参考方案1】:
/^;/g
在文件开头搜索分号,因为^
(某些软件逐行拆分字符串,所以在这种情况下,^ 指的是行首,因此会混淆)。
试试
const options =
files: f,
from: [/,/g, /\n;/g],
to: [';', "\n"]
如果您将整个文件作为字符串读取,还可以使用replace
函数:
fileContent.replace(/,/gi, ';').replace(/\n;/gi, "\n")
【讨论】:
【参考方案2】:/^;/gm
应该适用于分号引导线。
启用多行 (m) 标志时,开始和结束锚点(^ 和 $)将匹配一行的开始和结束,而不是整个字符串的开始和结束。
全局搜索(g),保留最后一个匹配的索引,允许后续搜索从上一个匹配的末尾开始。如果没有全局标志,后续搜索将返回相同的匹配项。
让我向您介绍正则表达式方面的新朋友。 https://regexr.com.
【讨论】:
以上是关于删除行首的字符,但从第 2 行开始的主要内容,如果未能解决你的问题,请参考以下文章
复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符