我是Perl的新手并且正在努力奋斗。
我需要学习基础知识而不是很多。
我用Google搜索,并没有简单回答我的问题。
我有一个字符串,其中包含数字,点,短划线,冒号和两个字母。
我想用空格替换一个字母,而用空格替换另一个字母。
我该怎么做?
没有string.ReplaceChar(theChar, replacement)
吗?
答案 0 :(得分:1)
您可以尝试以下示例:
来自命令行:
仅替换第一次出现的字母:
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代替所有出现次数。
答案 1 :(得分:0)
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 expresion运算符(=〜)用' - :'字符串代替模式( - )$ ALPHABET(:)的第一次出现。
此模式使用捕获组'()'来定位数据中的匹配。 根据您的数据,您可能需要调整捕获组中的模式。
比赛中的后退$ 1和$ 2用于演示目的。
如果您在问题中包含示例数据,我们可以提供更具体的正则表达式。