作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
免责声明:我已经将其交叉发布在PerlMonks上。
在Perl5中,我可以快速轻松地打印出Windows风格的\r\n
行尾的十六进制表示形式:
perl -nE '/([\r\n]{1,2})/; print(unpack("H*",$1))' in.txt
0d0a
in.txt
文件。然后:
perl -ni -e 's/\n/\r\n/g;print' in.txt
。 (或在vi/vim中,创建文件并只执行
:set ff=dos
)。
use v6;
use experimental :pack;
my $fn = 'in.txt';
my $fh = open $fn, chomp => False; # I've also tried :bin
for $fh.lines -> $line {
if $line ~~ /(<[\r\n]>**1..2)/ {
$0.Str.encode('UTF-8').unpack("H*").say;
}
}
0a
,方法是:
/(\n)/
/(\v)/
unpack()
或正则表达式。第二,如何捕获P6中换行符的两个元素(
\r\n
)?
最佳答案
Perl 6会自动为您切断行分隔符。这意味着当您尝试进行替换时,它不存在。
如果有组合字符,Perl 6还会创建合成字符。因此,如果您希望输入的基数为16,请使用'latin1'
编码或在$*IN
上使用返回Buf的方法。
本示例仅将CRLF附加到每行的末尾。
(即使没有行终止符,最后一行也总是以0D 0A
结尾)
perl6 -ne 'BEGIN $*IN.encoding("latin1"); #`( basically ASCII )
$_ ~= "\r\n"; #`( append CRLF )
put .ords>>.fmt("%02X");'
perl6 -ne 'BEGIN {
$*IN.encoding("latin1");
$*IN.chomp = False;
};
s/\n/\r\n/;
put .ords>>.fmt("%02X");'
关于regex - Perl6 : Capturing Windows newline in a string with regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534194/
我是一名优秀的程序员,十分优秀!