【发布时间】:2016-10-12 04:55:17
【问题描述】:
我可能遗漏了一些东西,但最近我遇到了一项任务,即根据某些条件获取最后一个符号。例如我有一个字符串:"this_is_separated_values_5"。现在我想将5 提取为Int。
注意:以_ 分隔的部分数量未定义。
如果我在字符串上有一个方法takeRightWhile(f: Char => Boolean),那将是微不足道的:takeRightWhile(ch => ch != '_')。而且它会很有效:一个简单的实现实际上会涉及找到_ 的最后一个索引并获取一个子字符串,而使用这种方法将节省第一步并提供更好的平均时间复杂度。
更新:伙计们,str.reverse.takeWhile(_!='_').reverse 的所有变体都非常低效,因为您实际上使用了额外的 O(n) 空间。如果你想有效地实现方法takeRightWhile,你可以从右边开始迭代,在字符串生成器中累积结果,然后返回结果。我问的是这种方法,而不是问题本身已经描述和拒绝的实现。
问题: scala 标准库中是否存在这种方法?如果没有,是否有标准库中的方法组合以达到相同的最少行数?
提前致谢。
【问题讨论】: