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

时间:2014-11-26 01:31:01

标签: string perl

我是Perl的新手并且正在努力奋斗。

我需要学习基础知识而不是很多。

我用Google搜索,并没有简单回答我的问题。

我有一个字符串,其中包含数字,点,短划线,冒号和两个字母。

我想用空格替换一个字母,而用空格替换另一个字母。

我该怎么做?

没有string.ReplaceChar(theChar, replacement)吗?

2 个答案:

答案 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用于演示目的。

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