我想从字符串中删除尾部斜杠。例如,如果我有一个名为的字符串 $ test =“test /”。我怎么能在最后删除斜线?
答案 0 :(得分:12)
使用正则表达式执行:$test =~ s/\/$//
或者,如果您确定最后一个字符是斜线,则可以使用chop函数:chop $test
答案 1 :(得分:8)
如果您确定最后有一个/最终可以使用斩波功能:
$test = "test/";
$test = chop($test);
如果您不确定可以这样做:
$test = "test/";
$test = $1 if($test=~/(.*)\/$/);
答案 2 :(得分:8)
您可以使用s///
替换运算符:
$test =~ s{/\z}{};
答案 3 :(得分:8)
就个人而言,我会改写这一点,以避免混合使用“\”和“/”
$test =~ s|/$||
如果您使用“|”你不需要引用“/”
答案 4 :(得分:0)
此代码段将处理除根目录之外的尾部斜杠:
#!/usr/bin/perl
my $test = './';
$test =~ s{(.+)/\z}{\1};
print $test."\n";
以下是它的工作原理:
正则表达式的第一部分 - s {(。+)/ \ z} - 在括号()中定义一个组。这是由正则表达式第二部分中的 \ 1 引用的 - {\ 1} 。在这个组中,我定义了一个或多个字符 - 。+ - 紧接着是正斜杠,然后是字符串的绝对结尾 - \ z 。
正则表达式将所有内容保存在括号内,稍后在替换规范中用作 \ 1 (基本上是第二部分。)
这与典型的sed策略非常相似,即:
echo "./" | sed -e 's:\(..*\)/$:\1:'
我希望这对你有所帮助。