首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从拼音字符串中提取最后n个字符

从拼音字符串中提取最后n个字符
EN

Stack Overflow用户
提问于 2010-02-01 13:05:29
回答 8查看 90.2K关注 0票数 112

要从字符串中获取最后一个n字符,我假设您可以使用

代码语言:javascript
复制
ending = string[-n..-1]

但是,如果字符串长度小于n个字母,则会得到nil

有哪些可用的解决方法?

Background:字符串是纯ASCII码,我可以访问Ruby1.9.1,并且我使用的是plain Old ruby对象(没有web框架)。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-03-07 12:36:22

这里你有一个一行,你可以放一个大于字符串大小的数字:

代码语言:javascript
复制
"123".split(//).last(5).to_s

对于ruby 1.9+

代码语言:javascript
复制
"123".split(//).last(5).join("").to_s

对于拼音2.0+,join返回一个字符串

代码语言:javascript
复制
"123".split(//).last(5).join
票数 108
EN

Stack Overflow用户

发布于 2010-02-01 13:17:37

嗯,我能想到的最简单的解决方法是:

代码语言:javascript
复制
ending = str[-n..-1] || str

(编辑:or运算符的优先级低于赋值,因此请确保使用||。)

票数 120
EN

Stack Overflow用户

发布于 2014-12-19 20:20:15

在纯Ruby (没有Rails)中,您可以这样做

代码语言:javascript
复制
string.chars.last(n).join

例如:

代码语言:javascript
复制
2.4.1 :009 > a = 'abcdefghij'
 => "abcdefghij"
2.4.1 :010 > a.chars.last(5).join
 => "fghij"
2.4.1 :011 > a.chars.last(100).join
 => "abcdefghij"

如果您使用的是Ruby on Rails,则可以在string对象上调用firstlast方法。这些方法是首选的,因为它们简洁直观。

例如:

代码语言:javascript
复制
[1] pry(main)> a = 'abcdefg'                                                                                                                
 => "abcdefg"
[2] pry(main)> a.first(3)                                                                                                                   
 => "abc"
[3] pry(main)> a.last(4)                                                                                                                    
 => "defg"
票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2174767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档