各位大佬,小弟学 Node 没有多久。受到写有道命令行工具的哥们的启发,自己写了一个小工具 yuki,能够将项目内文件结构自动映射并生成为 README.md,可以用来写放在 git 上的学习笔记之类的。现在有一个问题,就是在 Windows 底下的换行好像有些问题。我之前的处理方法是
const linebreak = (process.platform === 'win32') ? '\n\r' : '\n';
然后后面都用这个 linebreak 来表示要换行的地方。但是在室友的 Windows 电脑上测试时结果如下图:
换行情况十分诡异。想问一下,我这种处理方式是哪里出了问题?
回复 (10)
- 直接用
os.EOL,https://nodejs.org/api/os.html#os_os_eol \r\n才对,你写反了。
@atian25 好的,谢谢。我还是对 API 不太熟,要学习一个。
有一点要注意,这个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/
@CoderIvan 你确定吗? 用 \r 换行的是 1984 - 2001 年的 Classic Mac OS,你怎么遇到的?