1

私の変数$varの形式は「abc.de」です。この substr は、このステートメントで正確に何をしますか:

$convar = substr($var,0,index(".",$var));
4

5 に答える 5

5

index()ある文字列を別の文字列から検索し、その文字列のインデックスまたは位置を返します。

substr()2 つの位置 (0 から始まる) の間の文字列の部分文字列を返します。

上記を見て、index メソッドが間違って使用されていると思われます (その定義はindex STR, SUBSTRであるため)。

index($var, ".") 

「。」を見つける 「abc.de」内で「abc.de」の部分文字列を特定します

于 2009-06-11T11:24:02.737 に答える
2

ここで暗示される substr の使用法は -

substr EXPR,OFFSET,LENGTH

オフセットが 0 であるため、操作は最初の '.' を含まずに文字列を返します。位置 (index(".", $var) によって返される) を $convar に追加します。

問題をさらに明確にするために、perldocのsubstrおよびindex関数を見てください。

于 2009-06-11T11:24:17.773 に答える
0

Perl substr関数の形式は次のとおりです。

substr [string], [offset], [length]

インデックスオフセットからインデックスオフセット+長さまでの文字列を返します

インデックスの形式:

index [str], [substr]

これは、str で substr が最初に出現したインデックスを返します。

so substr('abc.de', 0, index(".", $var)); は、インデックス 0 (つまり 'a') から始まり、文字列 "." が最初に出現するまでの文字数までの部分文字列を返します。

したがって、 $convar の例では「abc」が含まれます

編集: くそー、人々は速すぎる :P edit2: そしてブライアンはインデックスが間違って使用されていることについて正しい

于 2009-06-11T11:25:00.097 に答える
0

実行して調べてみませんか?

#!/usr/bin/perl
私の $var = $ARGV[0];
私の $index = index(".",$var);

print "インデックスは $index です。\n";

私の $convar = substr($var, 0, $index);
print "convar は $convar です。\n";

一連の単語でそれを実行し、何が起こるかを確認してください。

また、次のように入力することもできます。

perldoc -f インデックス
perldoc -f substr
于 2009-06-17T21:45:38.347 に答える
0

すばらしいことに、代入の左辺として substr を使用して、部分文字列にデータを書き込むことができます。

$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a'
perl kicks ass!

同じ長さに固執する必要さえありません - ストリングはフィットするように拡張されます.

技術的には、これは substr を左辺値として使用することとして知られています。

于 2009-06-17T21:50:57.070 に答える