[英]How can I get Ruby to treat the index of a string as a character (rather than the ASCII code)?
我正在检查目录路径中的最后一个字符是否为'/'。 如何获得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
(这将是1.8中的ascii代码和1.9中的字符串),或者使用明确的长度。 这是假设您仅处理ascii。 对于unicode,您可能应该使用Ruby 1.9。
在您的示例中,最好的形式可能是dir[-1] == ?/
,或者如果使用Rails(或activesupport),则您可能更喜欢dir.ends_with? '/'
dir.ends_with? '/'
您可以使用47.chr
将47解释为'/',它返回=> "/"
作为附注,您可以使用dir[-1]
返回最后一个字符,而不是dir[dir.length-1]
因此,这将适用于ruby 1.8或1.9:
dir[-1].chr == '/'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.