Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Perl中缩短字符串?(简单)_Perl_String - Fatal编程技术网

在Perl中缩短字符串?(简单)

在Perl中缩短字符串?(简单),perl,string,Perl,String,我有一个字符串: $path = "C:/Users/user1/tools/test_folder/TEST1_HHH.123" 如何让Perl只打印字符串的TEST1部分 2011年3月15日增补- 如果不是TEST1_HHH.123,而是TEST1_2_HHH.123和我想要在_HHH.123之前的所有内容,该怎么办?这是我想要去除的唯一常量,也是路径的另一部分。谢谢–这很简单,便于携带: use File::Basename qw( basename ); my ($word) = b

我有一个字符串:

$path = "C:/Users/user1/tools/test_folder/TEST1_HHH.123"
如何让Perl只打印字符串的TEST1部分

2011年3月15日增补-


如果不是TEST1_HHH.123,而是TEST1_2_HHH.123和我想要在_HHH.123之前的所有内容,该怎么办?这是我想要去除的唯一常量,也是路径的另一部分。谢谢–

这很简单,便于携带:

use File::Basename qw( basename );
my ($word) = basename($path) =~ /^([^_]+)/;

这很简单,便于携带:

use File::Basename qw( basename );
my ($word) = basename($path) =~ /^([^_]+)/;

我的@test=;-我不认为这是你认为的那样。另外,您在第4行忘记了一个分号。由于它是一个文件路径,因此即使在Windows中,上述内容也不可移植,因为路径很容易是C:\Foo\Bar\Bazmy@test=;-我不认为这是你认为的那样。另外,您在第4行忘记了一个分号。因为这是一个文件路径,所以上面的内容不可移植,即使在Windows中也是如此,因为路径很容易是C:\Foo\Bar\baz如果不是TEST1_HHH.123,而是TEST1_2_HHH.123的文件名,我希望所有内容都在_HHH.123之前呢?这是我想要去除的唯一常量,也是路径的另一部分。THanks@dewalla,/^.*_HHH\.123\z/只有当字符串是perl运行的操作系统上的路径时,它才是可移植的。如果您的代码在Vax上运行时字符串为C:/Users/user1/tools/test\u folder/TEST1\u HHH.123,您将无法得到想要的结果。@Chas。欧文斯,是的,这就是便携式的定义。我没有说它可以处理来自任何系统的路径。Path::Class是您想要的,而不是TEST1_HHH.123,如果TEST1_2_HHH.123和我想要在_HHH.123之前的所有内容,则文件名是what if?这是我想要去除的唯一常量,也是路径的另一部分。THanks@dewalla,/^.*_HHH\.123\z/只有当字符串是perl运行的操作系统上的路径时,它才是可移植的。如果您的代码在Vax上运行时字符串为C:/Users/user1/tools/test\u folder/TEST1\u HHH.123,您将无法得到想要的结果。@Chas。欧文斯,是的,这就是便携式的定义。我没有说它可以处理来自任何系统的路径。类就是您想要的
if ( $path =~ /.*\/(([^\/]*)_([^\/]*))$/ )
{ 
  my $file = $1; # TEST1_HHH.123
  my $name = $2; # TEST1
  my $suff = $3; # HHH.123
}