我的字符串包含可变数量的前导连字符,并且在字符串的主体中可能包含也可能不包含连字符。例如:
--xxx-xxx
-xxxx
---xxxxxx-xx
我如何在 Ruby 中 a) 计算前导连字符的数量和 b) 返回删除前导连字符的字符串?
非常感谢您的帮助!
>> "--xxx-xxx"[/\A-+/].size
=> 2
>> "--xxx-xxx".sub(/\A-+/, '')
=> "xxx-xxx"
编辑:@shime 的评论让我想展示String#[]
or的其他相关功能String#slice
:
>> "--xxx-xxx"[/\A-+(.+)/, 1]
=> "xxx-xxx"
删除前导连字符:
.sub(/^-*/, "")
通过减去删除前后字符串的长度来计算前导连字符。
删除前导连字符:
str.sub(/^-+(.+)/, '\1')
s = '---xx-x'
new_s = s.gsub(/\A-*/, '')
hyph_num = s.length - new_s.length
gsub 删除前导连字符。s 和 new_s 长度之间的差异等于前导连字符的数量。
count = 0
"-----xxx---xxx---".each_char do |ch|
break if ch != '-'
count = count + 1
end
# => 5
"-----xxx---xxx---".sub(/^-+/, '')
# => "xxx---xxx---"
阅读Ruby 字符串去除定义的字符和https://stackoverflow.com/a/3166005/284795
然后比较裸字符串和原字符串的长度