0

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

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

输出将是:'Basingstoke '

我可以使用 搜索'&'罚款$string =~ /&/并且可以使用 替换/删除它s/&//,但我对如何删除&以及之后的所有字符有一个心理障碍。剩余的额外空间无关紧要。

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

4

3 回答 3

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

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

于 2013-07-02T16:33:46.113 回答
2
my ($prefix) = $string =~ /^([^&]*)/s;

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

到位:

$string =~ s/&.*//s;
于 2013-07-02T16:36:02.203 回答
2

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

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

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

由@TLP 提供(substr 作为左值):

substr($string, index($string, '&')) = ""
于 2013-07-02T16:35:12.937 回答