【发布时间】:2018-07-31 09:38:15
【问题描述】:
DOS/Windows 换行符是两 (2) 个字节,0x0D0A。 UNIX/Linux 换行符是一 (1) 个字节,0x0A。 Mac 换行符是一 (1) 个字节,0x0D。
如何编写代码来查找每个平台上换行符的长度? Windows 上的输出将产生两 (2) 个字节,但 Linux 上的输出将产生一 (1) 个字节。我在about_Special_Characters 中没有找到与此相关的任何内容。
在 Windows 上:
PS C:\src\t> type .\nl.ps1
'`n'
'`n'.Length
"`n"
"`n".Length
Windows 和 Linux 返回相同的结果。
PS C:\src\t> .\nl.ps1
`n
2
1
【问题讨论】:
-
转义符不会在字符串文字(单引号)中处理,这就是为什么您会看到第一个长度为 2。
-
Length字符串属性只会显示字符数,而不显示字节数。实际字节数将取决于您使用的编码。例如,在使用 UTF-16 编码的 Windows 上,换行符将占用 4 个字节。 -
顺便说一句,当经典的 Mac OS 在 2001 年成为 OS X 时,它获得了 Unix 基础,从那时起 macOS(现在众所周知)一直使用 LF-only (
0xA) 换行(不是过时的 CR-only (0xD))换行符,就像其他类 Unix 平台一样。 -
在 Windows 上,“换行符”不是 2 个字节。 “新行”由两个字符的序列而不是一个字符表示。但 "`n".length=1 在两个平台上。
标签: powershell powershell-v6.0