2013-12-21 28 views
1

我不是Ruby程序员,但在试图回答这个问题python's counterpart for Ruby String#succ?时,我试图了解Ruby的实现如何工作。然后我提到的文档succ → new_str,我意识到,所有的例子不符合说明中,除了了解字符串#succ

"<<koala>>".succ #=> "<<koalb>>" 

我的Python实现返回

>>> succ("<<koala>>") 
'<<koala>?' 

通过采用三个演替规律

  1. 递增数字总是会产生另一个数字
  2. 递增一个字母会导致另一个字母同样的情况。
  3. 递增非字母数字使用底层字符集的整理顺序。

正如从文档解释,但看到上面的例子,似乎我失去了一些东西。

有人能帮我理解上面例子背后的逻辑吗?

+1

*从最右边的字母数字(或最右边的字符(如果没有字母数字)*)开始*,因此您必须增加'a'。只有在字符串中有* no *字母数字时,才会将'>'增加到下一个字符。 –

+0

这是一个关于Ruby或关于Python的问题吗?如果要说明Ruby的succ是如何工作的,那么如何在Python中实现它应该是一个独立的问题,在这里应该是无关紧要的。你的问题混淆了。 – sawa

+0

根据Ruby文档:*后继者是通过从字符串中最右边的字母数字(或最右边的字符,如果没有字母数字)开始递增字符来计算的* – lurker

回答

2

它实际上是在文档中描述的,也许你误解了。

如果有字母数字字符,则必须从最右边的一个字符(最后"a","<<koala>>")开始递增。

如果字符串中没有字母数字字符,则必须从整个字符串中最右边的字符开始递增。

+0

谢谢。我应该对doc更加小心:-) – Abhijit