2011-06-04 72 views

回答

4

另一种解决方案

"string"[0].chr # => 's' 
5

这应该这样做...

s[0,1] 

这将返回在1.8的第一个字节和1.9第一字符,但在每种情况下的结果是一个字符串。

如果你想要两个中的第一个UTF-8字符序列,这是棘手的。正则表达式引擎是1.8与UTF-8意识一个地方,所以你可以使用:

s[/./u] 
+0

谢谢!但是这假定第一个字符不是多字节? – Dennis 2011-06-04 20:13:00

+0

这是有效的,但它可能会让别人看到相同的代码*为什么*你会这么做。如果你在一个团队中工作,最好在代码中留下评论或者使用更明确的'[0] .chr'。 – coreyward 2011-06-04 20:15:26

+0

@丹尼斯,不完全。它在1.8中返回第一个*字节*,而在1.9中返回第一个*字符*。我已经更新了答案来讨论编码字符。 – DigitalRoss 2011-06-04 20:25:43