首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用双反斜线替换反斜线?

如何用双反斜线替换反斜线?
EN

Stack Overflow用户
提问于 2011-06-02 09:28:35
回答 1查看 9.8K关注 0票数 22

我正在尝试用两个反斜线替换字符串中的反斜线,如下所示:

代码语言:javascript
复制
str.gsub!("\\", "\\\\")

但是,它什么也做不了。我很困惑..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-02 09:36:42

注意,这个答案是在Ruby1.9的上下文中给出的。由于ruby 2.0有一个新的正则表达式引擎,因此它在该上下文中可能无效。

这是可行的:

代码语言:javascript
复制
str.gsub!("\\", "\\\\\\") 
str.gsub!("\\", "\\\\\\\\") # also, will always work

编辑:解释(通过@vache提供的http://www.ruby-forum.com/topic/143645 )

免责声明:我不熟悉ruby的regex引擎的内部工作原理,这里的任何信息都是从上面提到的文章中推断出来的。

要知道的基本情况是,替换字符串将被计算2次。

第一次斜杠在字符串中执行转义时,第二次gsub将在字符串中搜索组引用。

正如@chris-johnsen提到的,6个斜杠并不总是有效的。这让我相信这样的事情正在发生:

有6个斜杠。3斜杠被传递到组参考层。尾部斜杠不被解释为转义字符,因为它后面没有任何东西,它被解释为反斜杠。所以最后这一层返回2个斜杠。如果后面有任何东西,则表达式将失败,因为第三个斜杠现在将用作转义字符。

对于8个斜杠:4个斜杠被传递到组参考层。四个斜杠将依次减少到两个。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6209480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档