ruby - "\n"与 '\n' 的奇怪之处

标签 ruby string

我已经离开 ruby​​ 一段时间了,我注意到 1.9.3 中有一些非常奇怪的东西(至少对我来说是这样)。也许有人可以向我解释一下。

我试图将一个字符串分成几行,所以我做了 string.split('\n'),但这让我很痛苦。

最终我找到了使用单引号而不是双引号的问题。即 string.split("\n")

在追踪的过程中,我注意到了一些事情

  1. '\n'.ord == 92
  2. "\n".ord == 10
  3. '\'.ord 不是有效的 ruby​​
  4. '\\'.ord == 92

我的唯一理论是单引号导致 ruby​​ 不解析字符串,因此将 \n 视为两个字符。但是,如果是这种情况,为什么 '\' 没有通过处理器?

我错过了什么吗?为什么 split 不能将字符串转换为正确的 ascii?

附言这是一些测试代码来说明我的观点

"asdf\nasdf".split('\n').size #=> 1
"asdf\nasdf".split("\n").size #=> 2

最佳答案

'\n' 是一个包含 2 个字符 \n 的字符串。

"\n" 是一个包含 1 个字符的字符串,新行字符 (LF),ASCII 码 10

当您使用双引号时,\ 用于转义特殊字符。

关于ruby - "\n"与 '\n' 的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641950/

相关文章:

java - 对 ArrayList<String> 进行排序,排除字符串前半部分的数字

java - 在字符串中的特定字符后添加一个空格

java - 通过登录传递密码

ruby - 从 block 中访问 Ruby 枚举器对象

ruby - 如何在出现特定单词后添加换行符

ruby-on-rails - Rails 引擎扩展 View ,而不是覆盖

mysql - 通过事件记录迁移将 rename_column 和 change_column 合二为一

ios - 如何处理语音识别中的同音字?

ruby-on-rails - Rspec allow_any_instance_of 返回实例 ID

ruby-on-rails - 错误: `class_eval':没有这样的文件或目录 - getcwd (Errno::ENOENT)