如何使用Perl从字符串中删除子字符串?例如,$URL包含http://xyz.com/Main#abcd.aspx
我想检查并删除' Main#' $URL谁能帮助我吗?
首先,我需要检查字符串是否Main#存在.如果存在,则将其剥离; 否则就不需要做任何事了.所以只有if语句.
.
use strict;
use warnings;
use URI::Split qw( uri_split uri_join );
my $str = "http://xyz.com/Main#abc.aspx"
my ($scheme, $auth, $path, $query, $frag) = uri_split( $str );
Run Code Online (Sandbox Code Playgroud)
这将为您提供URI作为一系列令牌,但除此之外,您想要做的具体细节有点不清楚.
首先,我需要检查字符串#Main是否存在,如果存在则将其删除,否则无需执行任何操作,因此只有if语句
if( $str =~ /#Main/ ){
$str =~ s/#Main//g;
}
Run Code Online (Sandbox Code Playgroud)
这将从url中的任何位置删除文字字符串'#Main'(如果存在).这也可以写成
$str =~ s/#Main//g;
Run Code Online (Sandbox Code Playgroud)
因为如果它不存在,将不会进行任何替换.
如果您尝试从Web客户端检索URI,例如,它是一个请求字符串,您可能会发现该#.*部分(也称为文档片段)已经从URI中删除.根据我的经验,这是Web客户端的行为方式.
我很确定有一个RFC在某处指定这样做,但是懒惰 -