ruby - 如何让 Ruby 将字符串的索引视为字符(而不是 ASCII 代码)?

标签 ruby string compare

我正在检查目录路径中的最后一个字符是否为“/”。如何让 ruby​​ 将字符串的特定索引视为字符而不是关联的 ASCII 码?

例如下面总是返回false:

dir[dir.length - 1] == '/'

这是因为 dir[dir.length - 1] 返回 ASCII 码 47(而不是 '/')。

关于如何将 47 解释为“/”的任何想法?还是首先有一种完全不同的方式来处理这个问题?

谢谢。

最佳答案

你必须要小心一点,因为 Ruby 1.8 和 Ruby 1.9 的行为发生了变化。

# In Ruby 1.8:
"hello"[0] == 104

# In Ruby 1.9:
"hello"[0] == "h"

# In both versions:
"hello"[0] == ?h
"hello"[0, 1] == "h"

一般来说,如果你只是想测试一个字符是否相等,你可以使用?x来表示字符x(这将是ascii码在 1.8 和 1.9 中的字符串),或者通过给出明确的长度来使用范围形式。这是假设您只处理 ascii。对于 unicode,您可能应该使用 Ruby 1.9。

从您的示例来看,最好的形式可能是 dir[-1] == ?/,或者如果使用 Rails(或 activesupport),您可能更喜欢 dir.ends_with? '/'

关于ruby - 如何让 Ruby 将字符串的索引视为字符(而不是 ASCII 代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798867/

相关文章:

python - 将 csv 文件的日期列与今天的日期进行比较

c++ - std::is_sorted 的奇怪行为

ruby-on-rails - 安装 rails 时出错,无法构建 gem native 扩展

补充平面 Unicode 字符的 Ruby 字符串转义

ruby - 简短而高效的 Ruby 代码,用于将单词数组转换为打乱顺序且逗号分隔的字符串,并在最后一个单词之前添加 "and"?

Ruby 的字符串 : Escape and unescape a custom character

ruby - 向类添加可枚举功能及更多功能

javascript - 如何确定给定字符串是否经过 HTML 转义?

javascript - 验证整个字符串并获取所有匹配项

android - 如何从 txt 文件中分离和比较字符串