Perl读取XML文档时如何移除^M及换行符?
解决Perl中XML读取内容含^M和换行符的问题
chomp之所以没用,是因为它只移除字符串末尾的系统默认换行序列(比如Unix的\n、Windows的\r\n),但你遇到的^M(也就是ASCII回车符\r)和换行符\n是在字符串中间,所以chomp处理不到。
直接用全局替换或字符转换就能搞定:
方法1:正则全局替换
在获取到$var后,用正则把所有的\r和\n都删掉:
my $var = $line->find('tag1/tag2/tag3/tag4')->string_value; $var =~ s/[\r\n]//g; # 移除所有回车符和换行符
方法2:用tr操作符(更高效)
tr操作符比正则更适合这种简单的字符删除场景:
my $var = $line->find('tag1/tag2/tag3/tag4')->string_value; $var =~ tr/\r\n//d; # d表示删除匹配的字符
如果只是想清理字符串末尾的所有空白(包括换行、回车、空格),可以用:
$var =~ s/\s+$//;
内容的提问来源于stack exchange,提问作者Koushik Chandra
相关产品推荐
相关产品推荐

