Tag: 反斜杠

Ruby – 寻找某种“Regexp unescape”方法

我有一堆带有特殊转义码的字符串,我想存储未转义 – 例如,解释器显示 “\\014\”\\000\”\\016smoothing\”\\011mean\”\\022color\”\\011zero@\\016″但我希望它显示(检查时)为”\014\”\000\”\016smoothing\”\011mean\”\022color\”\011zero@\016” 什么是取消它们的方法? 我想我可以制作一个正则表达式来从每个连续的n个反斜杠中删除1个反斜杠,但我没有很多正则表达式的经验,似乎应该有一个“更优雅”的方法来做到这一点。 例如,当我puts MyString它会显示我想要的输出,但我不知道如何将其捕获到变量中。 谢谢! 编辑添加上下文:我有这个类用于编组/恢复一些东西,但当我恢复一些旧的字符串时,它吐出一个类型错误,我已经确定是因为它们不是 – 因为一些莫名其妙的原因 – 存储为base64。 它们似乎刚刚被转义,这是我不想要的,因为尝试同样地恢复它们会产生TypeError TypeError: incompatible marshal file format (can’t be read) format version 4.8 required; 92.48 given TypeError: incompatible marshal file format (can’t be read) format version 4.8 required; 92.48 given因为Marshal查看字符串的第一个字符来确定格式。 require ‘base64’ class MarshaledStuff < ActiveRecord::Base validates_presence_of :marshaled_obj def contents obj = […]

在Ruby中转义字符串中的双反斜杠和单反斜杠

我试图以这种格式在Windows平台上访问我的ruby脚本中的网络路径。 \\servername\some windows share\folder 1\folder2\ 现在,如果我尝试将其用作路径,它将无法工作。 对于此脚本,没有正确转义单个反斜杠。 path = “\\servername\some windows share\folder 1\folder2\” d = Dir.new(path) 我尝试了所有我能想到的东西来正确地逃避路径中的斜线。 然而,我无法摆脱那个单一的反斜杠 – 因为它具有特殊意义。 我尝试单引号,双引号,转义反斜杠本身,使用替代引号,如%Q {}或%q {},使用ascii转换为char。 从某种意义上讲,我没有做任何事情。 :-)现在临时解决方案是映射网络驱动器N:\指向该路径并以这种方式访问​​它,但这不是解决方案。 有谁知道如何正确逃脱单反斜杠? 谢谢

单引号字符串中的反斜杠与双引号字符串相反

如果我在双引号和单引号字符串的开头添加反斜杠+空格,我会得到不同的结果: “\ text” ‘\ text’ 在双引号字符串的输出中,我只看到一个空格。 在单引号字符串的输出中,我看到反斜杠+空格。 那里发生了什么? 这是因为’\ ‘被解释为双引号字符串中的特殊字符,但在单引号字符串中字符保留原样? 如果我将字符串更改为this,我会看到相同的输出,即单个斜杠后跟一个空格,然后是文本: “\\ text” ‘\\ text’ 在这两种情况下,反斜杠都会被转义。 我很困惑为什么他们在这种情况下以同样的方式工作。 是否有一些规则可以帮助解释单引号字符串和双引号字符串如何处理Ruby中的反斜杠之间的根本区别?

Ruby中奇怪的反斜杠替换

我不明白这个Ruby代码: >> puts ‘\\ <- single backslash' # \ > puts ‘\\ <- 2x a, because 2 backslashes get replaced'.sub(/\\/, 'aa') # aa <- 2x a, because two backslashes get replaced 到目前为止,一切如预期。 但是如果我们用/\\/搜索1,并用’\\\\’编码的2替换,为什么我们得到这个: >> puts ‘\\ <- only 1 … replace 1 with 2'.sub(/\\/, '\\\\') # \ <- only 1 backslash, even though we replace […]