puts "C:\WATIR\gopal\**".gsub("\\", "/")
它给了我输出
C:WATIRgopal**
有谁能告诉我哪里出错了?
答案 0 :(得分:2)
问题不在于#gsub
,而在于字符串结构本身:
"C:\WATIR\gopal\**" # => "C:WATIRgopal**"
\
用于转义字符。例如\W
会尝试转义W
字符,而不是制作两个字符 - \
和W
。修复它的一种方法是使用另一个\
来逃避转义:
"C:\\WATIR\\gopal\\**" # => "C:\\WATIR\\gopal\\**"
更好的方法是使用单引号,其中\
没有特殊含义:
'C:\WATIR\gopal\**' # => "C:\\WATIR\\gopal\\**"
此外,如果您想要将一个字符替换为另一个字符,请更喜欢#tr
而不是#gsub
:
'C:\WATIR\gopal\**'.tr('\\', '/') # => "C:/WATIR/gopal/**"
答案 1 :(得分:1)
在你的问题中,。
<强> puts "C:\WATIR\gopal\**".gsub("\\", "/")
强>
给出
C:WATIRgopal**
因为它将\
视为转义字符并将其保留。
单引号:
'C:\WATIR\gopal\**'.gsub("\\", "\/")
使用单引号防止转义&#39; <&#39;
双引号:
如果您只想使用双引号:
<强> puts "C:\\WATIR\\gopal\\**".gsub("\\", "\/")
强>
这给出了o / p:
<强> C:/WATIR/gopal/**
强>
这是因为&#39; <&#39;被解释为双引号字符串中的特殊字符,但在单引号字符串中,字符按原样保留
单引号和双引号之间的区别:
Ruby只解释双引号字符串中的转义序列。
在单引号字符串中,只有\(反斜杠反斜杠)和\&#39; (反斜杠引用)被视为特殊字符。
只有在需要更多解释时才应使用双引号字符串。
否则,单引号可以提升性能。