如何从perl中的特定字符截断字符串?

时间:2013-07-02 16:30:29

标签: regex perl

我有一个字符串'Basingstoke & Deane',我想检查'&'符号并从该点剪切字符串(包括该字符串)。

所以我的输入是:'Basingstoke & Deane'

输出结果为:'Basingstoke '

我可以使用'&'搜索$string =~ /&/罚款,并可以使用s/&//替换/删除它,但我有一个如何删除&的精神障碍和之后的所有人物。留下的额外空间无关紧要。

这是众多字符串中的一种,因此通用解决方案最好。如果以前曾经问过这个问题,我已经看到很多关于使用substr截断字符串的问题以及搜索特定字符串的问题,等等,但是我没有找到什么。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:5)

$string =~ s/&.*//s;

将删除字符串的其余部分,包括换行符。

答案 1 :(得分:2)

您还可以找到&的索引,并使用substr函数获取字符串的一部分:

my $string    = 'Basingstoke & Deane';
my $amp_index = index($string, '&');

print substr($string, 0, $amp_index);
# Basingstoke 

由@TLP(substr as avalval)提供:

substr($string, index($string, '&')) = ""

答案 2 :(得分:2)

my ($prefix) = $string =~ /^([^&]*)/s;

my ($prefix) = split /&/, $string;      # Slightly faster, IIRC

在就地:

$string =~ s/&.*//s;