use*_*868 9 string perl escaping
与此类似,我如何在Perl中实现相同的目标?
我想转换
C:\Dir1\SubDir1\` to `C:/Dir1/SubDir1/
Run Code Online (Sandbox Code Playgroud)
我试图按照这里给出的例子,但是当我说出类似的话
my $replacedString= ~s/$dir/"/"; # $dir is C:\Dir1\SubDir1\
Run Code Online (Sandbox Code Playgroud)
我收到编译错误.我已经尝试转义正斜杠,但我得到其他编译器错误.
TLP*_*TLP 25
= ~与...非常不同=~.第一个是赋值和按位否定,第二个是与正则表达式一起使用的绑定运算符.
你想要的是这个:
$string_to_change =~ s/pattern_to_look_for/string_to_replace_with/g;
Run Code Online (Sandbox Code Playgroud)
请注意使用全局/g选项在整个字符串中进行更改.在您的情况下,看起来像你需要:
$dir =~ s/\\/\//g;
Run Code Online (Sandbox Code Playgroud)
如果你想要一个更易读的正则表达式,你可以交换分隔符: s#\\#/#g;
如果要保留原始字符串,可以在进行替换之前复制它.您也可以使用音译:tr#\\#/#- 在这种情况下,您不需要全局选项.
简而言之:
$dir =~ tr#\\#/#;
Run Code Online (Sandbox Code Playgroud)
文档:
您正在拆分=~运算符并缺少全局修饰符.刚分配$dir到$replacedString,然后做替换.
my $replacedString = $dir;
$replacedString =~ s|\\|/|g;
Run Code Online (Sandbox Code Playgroud)
您可以使用trtranslate运算符而不是s运算符来获得更简单的代码.
my $replacedString = $dir;
$replacedString =~ tr|\\|/|;
Run Code Online (Sandbox Code Playgroud)