4

当我在命令行中或从命令行运行以下代码时,CodeRunner出现以下错误;

Untitled.rb:25: Invalid char '\302' in expression
Untitled.rb:25: Invalid char '\255' in expression

第 25 行对应于FileUtils.mv方法所在的行。

if the_file.include? "Screen Shot"
    old_file = Shellwords.escape(homepath + "/Desktop/" + the_file)
    new_file = Shellwords.escape(screen_shot_folder + "/" + the_file)

    FileUtils.­mv old_file, new_file
end

最初我认为我的输入(或者old_filenew_file)有问题,这就是我将它们包装进去的原因,Shellwords.escape我还检查了old_file和的内容new_file是否正确。

如果我打电话puts old_file + " ++ " + new_file,我会得到如下信息;

/Users/tobyosbourn/Desktop/Screen\ Shot\ 2013-02-04\ at\ 10.49.14\ \(2\).png ++ /Users/tobyosbourn/Desktop/Screenshots/Screen\ Shot\ 2013-02-04\ at\ 10.49.14\ \(2\).png

看起来很正确,但是如果我将它们作为字符串复制并粘贴到 FileUtils.mv 中,我会收到相同的错误消息。

我已经阅读了 FileUtils 的使用方式,但看不到我做错了什么,有人可以建议吗?

如果它有助于我的 Ruby 版本是1.8.7

4

2 回答 2

4

您的源代码中有一个不可见的非 ASCII 字符,可能是通过从某处的网站上复制和粘贴代码添加的。

具体来说,您的代码中有一个流氓软连字符,编码为 UTF-8(软连字符 = UTF-8 中的 C2 AD,或八进制转义符号中的 \302\255)。

最好的办法是在你的文本编辑器中“显示不可见”,看看你是否能找到一个与其他空间不同的空间。

编辑FileUtils.将您的片段粘贴到我的文本编辑器中会在(.和之间)之后显示一个软连字符mv。如果看不到字符,请删除FileUtils.mv并重新键入以摆脱字符。

于 2013-02-13T21:46:06.137 回答
1

另一种去除复制粘贴文本中不可见字符的方法是首先将其复制到原始文本编辑器,例如 Windows 中的记事本或 Linux 中的 Nano,它会自动删除大部分不需要的内容,编辑掉剩余的可疑内容字符,然后从那里粘贴。例如,如果我将您的 FileUtils.mv 粘贴到记事本中,我会得到 FileUtils.¬mv

于 2015-08-19T19:23:00.777 回答