我有一个看起来像\\some\windows\location
的输入,我需要传递给Ruby命令。
有没有办法阻止ruby编译器解释它?在传递上述输入时,我看到该字符串已存储为\some\windows\location
此外,它会将\\some\new\location
转换为\some\\new\location
C#有一个@运算符,确保字符串按原样传递,是否有像ruby那样的东西?我想在不改变我的ruby代码的情况下实现这一点。
添加
用户输入来自c#控制台应用程序,我想对输入字符串进行最少的工作以使其与Ruby一起使用。我想要的是将它从我的c#app传递到ruby应用程序并使其正常工作。
答案 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程序,它获取用户输入,删除尾随的换行符,并使用给定的输入调用puts
和p
。
input = gets.chomp
# user enters \path\to\somewhere
puts input
# \path\to\somewhere
p input
# "\\path\\to\\somewhere"
现在应该清楚Ruby如何处理和输出反斜杠,如果你向我们展示如何将字符串从C#传递给Ruby,那么问题的其余部分才能得到解答。