我想只删除空格并忽略字符串中的制表符

时间:2016-10-23 06:09:56

标签: regex perl

String包含空格和制表符。我想删除字符串中出现的所有空格,但保持选项卡空格不变。 我希望保留选项卡,以便在导入文本文件时可以在Excel中使用tab-delimiter选项 感谢

2 个答案:

答案 0 :(得分:2)

标签是ascii字符0x09;空格是0x20。替换空格不会影响标签...

$str = "1 2 3\t4 5 6\t7 8 9\n";
$str =~ s/ //g;
# $str is now "123\t456\t789\n"

请查看perlrequick以了解正则表达式。

答案 1 :(得分:1)

[我通常不回答#34;为我编写代码"这样的问题,但我认为有一个答案替代现有的基于正则表达式的答案很重要。]

虽然你可以使用s/.../.../来删除字符串中的字符,但是调用Perl的正则表达式引擎的所有功能来做一些简单的操作可能有点过分。音译运算符(tr/.../.../)有一个/d选项,用于从目标字符串中删除特定字符。

#!/usr/bin/perl

use strict;
use warnings;

my $str = "1 2 3\t4 5 6\t7 8 9\n";

print $str;

$str =~ tr/ //d;

print $str;