如何获取给定字符串的子字符串直到指定字符的第一次出现?

时间:2011-11-24 11:36:25

标签: string perl substring

是否为perl。

例如,如果我有"hello.world"且指定的字符为'.',那么我想要的结果是"hello"

5 个答案:

答案 0 :(得分:25)

请参阅perldoc -f index

$x = "hello.world";
$y = substr($x, 0, index($x, '.'));

答案 1 :(得分:6)

使用substr

my $string = "hello.world";
my $substring = substr($string, 0, index($string, "."));

或者使用regexp:

my ($substring2) = $string =~ /(.*)?\./;

答案 2 :(得分:1)

use strict;
use warnings;

my $string = "hello.world";
my $dot = index($string, '.');
my $word = substr($string, 0, $dot);

print "$word\n";

为您提供hello

答案 3 :(得分:1)

另一种可能性:

my $string = 'hello.world';
print ((split /\./, $string)[0], "\n");

答案 4 :(得分:1)

本着TIMTOWTDI的精神,并引入新功能:使用non-destructive option /r

my $partial = $string =~ s/\..*//sr;

贪婪的.*结束将在第一个句点之后删除所有内容,包括可能的换行符(/s选项),但保持原始字符串完整,并删除需要parens强加列表上下文( /r选项)。

引自perlop:

  

如果使用/ r(非破坏性)选项,则运行   替换字符串的副本而不是返回   替换次数,无论是否返回副本   发生了替代。当/ r是时,原始字符串永远不会改变   用过的。即使输入是一个字符串,副本也将始终是一个纯字符串   对象或绑定变量。