有没有办法阻止Ruby从输入字符串中转义字符

时间:2014-06-16 06:07:10

标签: c# ruby escaping

我有一个看起来像\\some\windows\location的输入,我需要传递给Ruby命令。

有没有办法阻止ruby编译器解释它?在传递上述输入时,我看到该字符串已存储为\some\windows\location

此外,它会将\\some\new\location转换为\some\\new\location

C#有一个@运算符,确保字符串按原样传递,是否有像ruby那样的东西?我想在不改变我的ruby代码的情况下实现这一点。

添加
用户输入来自c#控制台应用程序,我想对输入字符串进行最少的工作以使其与Ruby一起使用。我想要的是将它从我的c#app传递到ruby应用程序并使其正常工作。

1 个答案:

答案 0 :(得分:0)

这只是关于Ruby部分的部分答案。

如果要在Ruby中创建一个带有单个反斜杠的字符串,则必须编写\\,因为反斜杠是一个转义字符。请注意,单个反斜杠将由REPL(如IRB或Pry)显示为"\\"。但是,如果你puts那个字符串,你只会看到一个反斜杠,这是字符串的实际内容。您可以在执行puts string.inspect或仅p string时看到转义版本,这是相同的。

one_backslash = "\\"
#=> "\\"

puts one_backslash
# \

puts one_backslash.inspect
# "\\"

p one_backslash
# "\\"

现在考虑一个小的Ruby程序,它获取用户输入,删除尾随的换行符,并使用给定的输入调用putsp

input = gets.chomp
# user enters \path\to\somewhere

puts input
# \path\to\somewhere

p input
# "\\path\\to\\somewhere"

现在应该清楚Ruby如何处理和输出反斜杠,如果你向我们展示如何将字符串从C#传递给Ruby,那么问题的其余部分才能得到解答。