Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
String 如何从字符串中删除特定字符?_String_Perl - Fatal编程技术网

String 如何从字符串中删除特定字符?

String 如何从字符串中删除特定字符?,string,perl,String,Perl,我是Perl的新手,正在与它斗争 我只需要学习基础知识,不需要太多 我在谷歌上搜索了一下,没有得到简单的答案 我有一个包含数字、点、破折号、冒号和两个字母的字符串 我想用空格代替一个字母表,而不用空格代替另一个字母表 我该怎么做 是不是没有string.ReplaceChar(theChar,replacement)?Perl适合使用正则表达式,所以我会这样做 #!/usr/bin/perl -w use strict; my $ALPHABET = 'abcde'; my $source_d

我是Perl的新手,正在与它斗争

我只需要学习基础知识,不需要太多

我在谷歌上搜索了一下,没有得到简单的答案

我有一个包含数字、点、破折号、冒号和两个字母的字符串

我想用空格代替一个字母表,而不用空格代替另一个字母表

我该怎么做


是不是没有
string.ReplaceChar(theChar,replacement)

Perl适合使用正则表达式,所以我会这样做

#!/usr/bin/perl -w
use strict;

my $ALPHABET = 'abcde';
my $source_data = "1.2.3-$ALPHABET:$ALPHABET";

my $dest_data = $source_data
$dest_data =~ s/(-)$ALPHABET(:)/$1 $2/;

print "source_data: $source_data\n";
print "dest_data: $dest_data\n";

--->
source_data: 1.2.3-abcde:abcde
dest_data: 1.2.3- :abcde
这里,reqular表达式运算符(=~)将模式(-)$ALPHABET(:)的第一次出现替换为“-:”字符串

此模式使用捕获组“()”在数据中查找匹配项。 根据您的数据,您可能需要调整捕获组中的模式

比赛中的反向参考$1和$2用于演示目的


如果您在问题中包含示例数据,我们可以帮助您使用更具体的正则表达式。

您可以按照以下示例进行尝试:

来自命令行:

#!/usr/bin/perl -w
use strict;

my $data = "123.-A456:7B9AB0";
my $final_data = $data;

$final_data =~ s/A// ;
$final_data =~ s/B/ /;

print "data: $data\n";
print "final_data: $final_data\n";
要仅替换第一个出现的字母,请执行以下操作:

sdlcb@ubuntu:~$ echo "123.-A456:7B9AB0" | perl -pe 's/A//; s/B/ /'
123.-456:7 9AB0
sdlcb@ubuntu:~$ echo "123.-A456:7B9AB0" | perl -pe 's/A//g; s/B/ /g'
123.-456:7 9 0
要替换所有出现的字母,请执行以下操作:

sdlcb@ubuntu:~$ echo "123.-A456:7B9AB0" | perl -pe 's/A//; s/B/ /'
123.-456:7 9AB0
sdlcb@ubuntu:~$ echo "123.-A456:7B9AB0" | perl -pe 's/A//g; s/B/ /g'
123.-456:7 9 0
在脚本中:

#!/usr/bin/perl -w
use strict;

my $data = "123.-A456:7B9AB0";
my $final_data = $data;

$final_data =~ s/A// ;
$final_data =~ s/B/ /;

print "data: $data\n";
print "final_data: $final_data\n";

用g代替所有出现的地方。

你说的“两个字母”是什么意思?您的数据是否有两次a-z,在这种情况下为上/下/混合?还是说两个字符集?可能是@TaninDirect的重复-谢谢你的提问。它只有两个字母,每个字母只出现一次,不再出现。我正在提出另一个与此相关的问题。我想把你的代码转换成子程序。它失败了。由于90分钟的时间限制,我现在无法发布问题。如果可能的话,请帮助我。将很快在这里添加链接。AMD-新问题在这里-