如何在Elixir中便捷获取字符串的第n个字符?
更简便的Elixir字符串单个字符获取方式
好问题!确实Ruby里通过"Hello"[0]取单个字符的写法非常直观,在Elixir里其实有专门的函数可以实现同样简洁的效果,不用每次写String.slice("Hello", 0..0)这种稍显繁琐的范围语法。
最直接的方案是使用**String.at/2**函数,它就是专门用来获取字符串指定索引位置的单个字符的,用法和你习惯的Ruby写法几乎一样简洁:
String.at("Hello", 0) #=> "H" String.at("Hello", 2) #=> "l"
顺便提个小细节:Elixir的字符串是原生UTF-8编码的,所以String.at/2能正确处理多字节的Unicode字符,比如中文、emoji这类,不会出现乱码问题:
String.at("Elixir 真棒", 7) #=> "棒" String.at("😀😃😄", 1) #=> "😃"
如果你的需求是获取对应位置字符的Unicode码点(整数形式),还可以用String.codepoint_at/2:
String.codepoint_at("Hello", 0) #=> 72
内容的提问来源于stack exchange,提问作者Iggy
相关产品推荐
相关产品推荐

