如何从str中删除斜杠?

use*_*240 1 regex perl

如何从str中删除斜杠?在perl上需要解决方案.我试过了

        ($phot) = $photos =~ s/\///g;
Run Code Online (Sandbox Code Playgroud)

但它不起作用

rua*_*akh 10

在Perl中,s///操作员修改您应用它的字符串; 所以,你应该写:

my $phot = $photos;
$phot =~ s/\///g;
Run Code Online (Sandbox Code Playgroud)

或者,更简洁地说:

(my $phot = $photos) =~ s/\///g;
Run Code Online (Sandbox Code Playgroud)

在Perl的最新版本中,有一个/r可以使用的标志,以获得更像您期望的行为:

my $phot = ($photos =~ s/\///gr);
Run Code Online (Sandbox Code Playgroud)

但你必须检查你的Perl版本是否有它.(您可以运行perl -v以查看您拥有的Perl版本.此功能是在Perl v5.14.0中引入的.)


编辑添加:正如amon在评论中指出的那样,并且Ωmega在他/她的回答中暗示,s///运算符允许除以外的分隔符/; 所以,例如,任何这些都可以工作:

(my $phot = $photos) =~ s{/}{}g;
(my $phot = $photos) =~ s#/##g;
(my $phot = $photos) =~ s'/''g;        # note: prevents variable interpolation
(my $phot = $photos) =~ s-/--g;
Run Code Online (Sandbox Code Playgroud)

其中一个可能比写作更清楚s/\///g.(这取决于你.)

选择分隔符的这种自由对于所有类似引用的运算符都是正确的; 例如,"x"也可以写成qq{x}qq/x/qq-x-.有关更多信息,请参见手册页中的"引用和引用类操作符"perlop.