微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows中split.EOL给出不同的结果

如何解决在Windows中split.EOL给出不同的结果

我正在尝试将多行CSS值拆分并合并为一行。例如,我们在CSS文件中具有background-image属性。有时,该属性值将具有多个线性梯度值。如下所示:

background-image: linear-gradient(
right,#000 0%,#fff 20%,#ccc 40%,#ddd 60%,#fff 80%,#000 100%
)

在以上示例中,背景图像值分为多行。因此,我想做的是在REACT的JS下面使用此命令将这些行合并为一行以达到特定目的。这段代码在某些Windows计算机上可以正常运行:

const EOL = require('os');

console.log(getfile.split(EOL));

在上面的JS中,getfile字符串包含多个CSS文件属性和值,并返回以下内容

大多数Windows计算机上的控制台日志结果:

[
'background-image: linear-gradient(','right,','#000 0%,'#fff 20%,'#ccc 40%,'#ddd 60%,'#fff 80%,'#000 100%',')'
]

在一台Windows计算机上的控制台日志结果:

    [
    'background-image: linear-gradient(\n' +
    'right,\n' +
    '#000 0%,\n' +
    '#fff 20%,\n' +
    '#ccc 40%,\n' +
    '#ddd 60%,\n' +
    '#fff 80%,\n' +
    '#000 100%\n' +
    ')'
    ]

split.(EOL)在大多数Windows计算机上均可使用。但是,它不能在一个上正常工作。您可以检查控制台结果。在每行中添加 \ n 文本,然后在该特定版本的Windows中添加 +(加号)符号,而不是(逗号)。 。由于这个结果,它没有将多行代码合并为一行。

我不确定为什么在特定的Windows计算机中会发生这种情况。

仅供参考:两个Windows计算机节点版本均高于12

解决方法

os.EOL的值取决于平台:https://nodejs.org/dist/latest-v14.x/docs/api/os.html#os_os_eol。因此,在您的情况下,您不应依赖os.EOL,而应使用正在处理的文件的实际行尾。现在,\ n或\ n \ r由您的编辑器确定。例如,VSCode支持\ n和\ n \ r。如果使用的是CSS,则CSS文件在不同机器上可能具有不同的行尾的原因之一可能是Git中的autocrlf选项。基本上,可以将Git配置为在结帐时将\ n转换为\ n \ r。确认这是否正确,并且不依赖os.EOL,因为它只能为您提供当前平台上的预期行尾,这不一定是给定文件使用的行尾。

,

考虑使用getfile.split(/\r?\n/);。无论平台/操作系统如何,这都将解析换行符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。