2011-11-24 79 views

回答

22

perldoc -f index

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

我並不是說perldoc引用是「RTFM」,而是作爲「有關更多信息,請參閱:____」。 :) –

5

使用substr

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

或者使用正則表達式:

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

's/substring/substr/g' –

+0

@JimDavis謝謝 – yko

+1

substr會給字符串,直到* first *期'',正則表達式會給字符串,直到* last *期。注意不同之處。使用'。*?'爲非貪婪的正則表達式來獲得相同的功能。世界的 – TLP

1
use strict; 
use warnings; 

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

print "$word\n"; 

給你hello

+0

; my $ world = substr($ string,$ dot,length($ string)); – Hariboo

1

另一種可能性:

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

在TIMTOWTDI的精神,並引入新的功能:使用non-destructive option/r

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

貪婪.*端將砍掉在第一時段後的一切,包括可能的換行符(/s選項),但保持原始字符串不變,並刪除需要增加列表上下文的選項(/r選項)。從perlop得到

引用:

如果/ R(非破壞性)選項用於然後在其上運行的而不是返回 數置換的字符串的副本和 取代時,它返回副本是否發生 替換。當/ r使用 時,原始字符串永遠不會更改。即使輸入是一個 對象或一個綁定變量,該副本始終是一個純字符串。

相關問題