Perl的substr做什么?
我的变量$var的形式为“abc.de”。这个substr在这个语句中到底做了什么:Perl的substr做什么?,perl,string,substr,Perl,String,Substr,我的变量$var的形式为“abc.de”。这个substr在这个语句中到底做了什么: $convar = substr($var,0,index(".",$var)); 索引在另一个字符串中查找一个字符串并返回该字符串的索引或位置 substr将返回从0开始的两个位置之间的字符串的子字符串 综上所述,我怀疑index方法使用得不正确,因为它的定义是index STR、SUBSTR,应该是 index($var, ".") 要在“abc.de”中查找“.”并确定abc.de的子字符串,索引将
$convar = substr($var,0,index(".",$var));
索引在另一个字符串中查找一个字符串并返回该字符串的索引或位置
substr将返回从0开始的两个位置之间的字符串的子字符串
综上所述,我怀疑index方法使用得不正确,因为它的定义是index STR、SUBSTR,应该是
index($var, ".")
要在“abc.de”中查找“.”并确定abc.de的子字符串,索引将在另一个字符串中查找一个字符串并返回该字符串的索引或位置
substr将返回从0开始的两个位置之间的字符串的子字符串
综上所述,我怀疑index方法使用得不正确,因为它的定义是index STR、SUBSTR,应该是
index($var, ".")
要在“abc.de”中查找“.”并确定abc.de的子字符串,此处暗示的子字符串用法如下-
substr EXPR,OFFSET,LENGTH
由于偏移量为0,该操作将返回字符串,直到但不包括索引返回的第一个“.”位置,$var转换为$convar
请查看perldoc中的和函数,以进一步澄清问题。此处暗示的substr用法如下-
substr EXPR,OFFSET,LENGTH
由于偏移量为0,该操作将返回字符串,直到但不包括索引返回的第一个“.”位置,$var转换为$convar
请查看perldoc中的和函数,以进一步澄清问题。Perl函数具有以下格式:
substr [string], [offset], [length]
它将字符串从索引偏移量返回到索引偏移量+长度
其格式为:
index [str], [substr]
返回str中第一次出现的substr的索引
因此,substr'abc.de',0,index.,$var;
将返回从索引0开始的子字符串,即“a”,最多返回字符串第一次出现的字符数
所以$convar将在您的示例中包含abc
编辑:该死,人太快了:p
edit2:Brian关于索引被错误使用的说法是正确的Perl函数有以下格式:
substr [string], [offset], [length]
它将字符串从索引偏移量返回到索引偏移量+长度
其格式为:
index [str], [substr]
返回str中第一次出现的substr的索引
因此,substr'abc.de',0,index.,$var;
将返回从索引0开始的子字符串,即“a”,最多返回字符串第一次出现的字符数
所以$convar将在您的示例中包含abc
编辑:该死,人太快了:p
编辑2:关于索引被错误地使用,Brian是对的为什么不运行它并找出原因呢 #!/usr/bin/perl my $var = $ARGV[0]; my $index = index(".",$var); print "index is $index.\n"; my $convar = substr($var, 0, $index); print "convar is $convar.\n"; 用一堆词来表达,看看会发生什么 此外,您可能需要键入: perldoc -f index perldoc -f substr
为什么不运行它并找出答案呢 #!/usr/bin/perl my $var = $ARGV[0]; my $index = index(".",$var); print "index is $index.\n"; my $convar = substr($var, 0, $index); print "convar is $convar.\n"; 用一堆词来表达,看看会发生什么 此外,您可能需要键入: perldoc -f index perldoc -f substr
难以置信的是,您可以使用substr作为赋值的左侧将数据写入子字符串:
$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a'
perl kicks ass!
你甚至不需要坚持相同的长度-字符串将扩展到适合
从技术上讲,这被称为使用substr作为左值。令人难以置信的是,您可以使用substr作为赋值的左侧将数据写入子字符串:
$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a'
perl kicks ass!
你甚至不需要坚持相同的长度-字符串将扩展到适合
从技术上讲,这被称为使用substr作为左值。ah,因此原始代码是表示chop$convar=$var;的优雅方式:substr的聪明之处在于它也可以用作左值。啊,因此原始代码是一种优雅的方式,可以说chop$convar=$var;:substr的聪明之处在于它也可以用作左值。