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

Ell*_*hen 1 ruby string compare

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

例如,以下始终返回false:

dir[dir.length - 1] == '/'
Run Code Online (Sandbox Code Playgroud)

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

关于如何将47解释为'/'的任何想法?或者首先处理这个问题的方法完全不同?

谢谢.

Mar*_*une 5

你必须要小心,因为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"
Run Code Online (Sandbox Code Playgroud)

通常,如果您只想测试与字符的相等性,可以使用它?x来表示字符x(将是1.8中的ascii代码和1.9中的字符串),或者通过给出显式长度来使用范围表单.这假设您只处理ascii.对于unicode,您可能应该使用Ruby 1.9.

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