我正在检查目录路径中的最后一个字符是否为“/”。如何让 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/