問題はPerlです。
たとえば、"hello.world"
があり、指定された文字が'.'
の場合、必要な結果は"hello"
になります。
見る - perldoc -f index
:
$x = "hello.world";
$y = substr($x, 0, index($x, '.'));
substr
を使用する:
my $string = "hello.world";
my $substring = substr($string, 0, index($string, "."));
またはregexpを使用する:
my ($substring2) = $string =~ /(.*)?\./;
TIMTOWTDIの精神に基づき、新機能を導入する: 非破壊オプション _/r
_を使用する
_my $partial = $string =~ s/\..*//sr;
_
貪欲な_.*
_終了は、最初のピリオドの後、可能な改行文字(_/s
_オプション)を含むすべてを切り落としますが、元の文字列をそのまま維持し、リストコンテキストを課すための親の必要性を排除します(_/r
_オプション)。
Perlopからの引用:
/ r(非破壊)オプションを使用すると、文字列のコピーに対して置換が実行され、置換の数を返す代わりに、置換が発生したかどうかに関係なくコピーが返されます。/rを使用しても、元の文字列が変更されることはありません。入力がオブジェクトまたはタイ変数であっても、コピーは常にプレーンな文字列になります。
use strict;
use warnings;
my $string = "hello.world";
my $dot = index($string, '.');
my $Word = substr($string, 0, $dot);
print "$Word\n";
hello
を提供します
別の可能性:
my $string = 'hello.world';
print ((split /\./, $string)[0], "\n");