【发布时间】:2016-03-15 02:24:36
【问题描述】:
我正在尝试找到确定字符串数组中字母数的最佳方法。我正在拆分字符串,然后循环每个单词,然后拆分字母并循环这些字母。
当我确定长度时,我遇到的问题是它也在计算逗号和句点。因此,仅以字母表示的长度是不准确的。
我知道使用正则表达式可能会更短,但我还不太精通。我的代码通过了大多数测试,但我被困在逗号的位置。
E.g. 'You,' should be string.length = "3"
示例代码:
def abbr(str)
new_words = []
str.split.each do |word|
new_word = []
word.split("-").each do |w| # it has to be able to handle hyphenated words as well
letters = w.split('')
if letters.length >= 4
first_letter = letters.shift
last_letter = letters.pop
new_word << "#{first_letter}#{letters.count}#{last_letter}"
else
new_word << w
end
end
new_words << new_word.join('-')
end
new_words.join(' ')
我尝试在循环单词之前执行gsub,但这不起作用,因为我不想完全删除逗号。我只是不需要他们被计算在内。
感谢任何启蒙。
【问题讨论】:
-
我很难确定
abbr方法的用途。您能否证明该方法的示例输入以及您想要返回的内容?如果您只想快速计算字符串中的字母字符:str.scan(/[[:alpha:]]/).length -
对不起@LucasNelson - 如果单词长度为 4 或更多,目标是缩写单词。例如。
internationalization = i18n。所以我们得到第一个和最后一个字母,然后计算中间的字母。我更新了代码,我不能扫描,因为它是一个数组(不是专家,所以我可能遗漏了一些东西) -
@LizGee,您能否提供更多示例?我也不太明白你需要做什么。
标签: ruby-on-rails arrays ruby string