繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM