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