各位大佬,小弟学 Node 没有多久。受到写有道命令行工具的哥们的启发,自己写了一个小工具 yuki,能够将项目内文件结构自动映射并生成为 README.md,可以用来写放在 git 上的学习笔记之类的。现在有一个问题,就是在 Windows 底下的换行好像有些问题。我之前的处理方法是
const linebreak = (process.platform === 'win32') ? '\n\r' : '\n';
然后后面都用这个 linebreak 来表示要换行的地方。但是在室友的 Windows 电脑上测试时结果如下图:
换行情况十分诡异。想问一下,我这种处理方式是哪里出了问题?
os.EOL,https://nodejs.org/api/os.html#os_os_eol\r\n才对,你写反了。@atian25 好的,谢谢。我还是对 API 不太熟,要学习一个。
@atian25
有一点要注意,这个API只是知道运行环境用的哪个
EOL也就是说,假设你的文本是在win下写的,然后linux或mac下读的话,这个API并不能解决问题
因为3种系统有3种不同的
EOL,可以考虑用正则xxx.split(/[\r\n]{1,2}/)@CoderIvan 呃,您的意思我懂了,但是具体实现不包括分行的读取,只是要在 md 文件里写分行。所以我不是很理解这里提到正则
xxx.split(/[\r\n]{1,2}/)具体该怎么用?@bighuang624
这个正则是匹配出3种换行符
\r, \n, \r\n,那你只要读到这3个的其中之一,就可以在md文件里写分行了或者说不转换,你直接搬过去md那边,好像也没什么不对吧
md格式不知道有没要求说只能用哪种换行符
我从来只用 LF 换行,不管是什么系统
@CoderIvan,@bighuang624 正则表达式
/[\r\n]{1,2}/有bug ,'\n\r'在 windows 里会被判断为换行, 而且\r是 OS X 之前的 系统才有, 建议/\r?\n/@ianchn
哦,确实是忽略了这个Bug
我在实际实用中,这场景比较少,所以一直没发现
但我之前就是用的你写的这个,直至遇到Mac系统
\r。。。@CoderIvan 你确定吗? 用 \r 换行的是 1984 - 2001 年的 Classic Mac OS,你怎么遇到的?
@ianchn
因为之前是客户用的MAC电脑写的CSV文件,我把文件拿过来读的时候发现的
看你这么一说,我现在都不确定了,我得找个MAC电脑确认下