Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 我只想删除空格并忽略字符串中的制表符_Regex_Perl - Fatal编程技术网

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

Regex 我只想删除空格并忽略字符串中的制表符,regex,perl,Regex,Perl,字符串既有空格也有制表符。我想删除字符串中出现的所有空格,但保留制表符空格不变。 希望保留这些选项卡,以便在导入文本文件时可以使用excel中的制表符分隔符选项 谢谢制表符为ascii字符0x09;空格为0x20。替换空格不会影响选项卡 $str = "1 2 3\t4 5 6\t7 8 9\n"; $str =~ s/ //g; # $str is now "123\t456\t789\n" 请看一看正则表达式的介绍。[我通常不会回答这样的“为我编写代码”问题,但我认为有一个答案可以替代现有

字符串既有空格也有制表符。我想删除字符串中出现的所有空格,但保留制表符空格不变。 希望保留这些选项卡,以便在导入文本文件时可以使用excel中的制表符分隔符选项
谢谢

制表符为ascii字符0x09;空格为0x20。替换空格不会影响选项卡

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

请看一看正则表达式的介绍。

[我通常不会回答这样的“为我编写代码”问题,但我认为有一个答案可以替代现有的基于正则表达式的答案是很重要的。]

虽然您可以使用
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;

很好的评论,我很久以前就用过这个,但实际上已经忘记了:)