1

我的字符串包含可变数量的前导连字符,并且在字符串的主体中可能包含也可能不包含连字符。例如:

--xxx-xxx

-xxxx

---xxxxxx-xx

我如何在 Ruby 中 a) 计算前导连字符的数量和 b) 返回删除前导连字符的字符串?

非常感谢您的帮助!

4

6 回答 6

3
>> "--xxx-xxx"[/\A-+/].size
=> 2
>> "--xxx-xxx".sub(/\A-+/, '')
=> "xxx-xxx"

编辑:@shime 的评论让我想展示String#[]or的其他相关功能String#slice

>> "--xxx-xxx"[/\A-+(.+)/, 1]
=> "xxx-xxx" 
于 2012-06-26T10:34:30.940 回答
0

删除前导连字符:

.sub(/^-*/, "")

通过减去删除前后字符串的长度来计算前导连字符。

于 2012-06-26T10:33:31.060 回答
0

删除前导连字符:

str.sub(/^-+(.+)/, '\1')
于 2012-06-26T10:33:36.157 回答
0
s = '---xx-x'
new_s = s.gsub(/\A-*/, '')
hyph_num = s.length - new_s.length

gsub 删除前导连字符。s 和 new_s 长度之间的差异等于前导连字符的数量。

于 2012-06-26T10:33:53.087 回答
0
count = 0

"-----xxx---xxx---".each_char do |ch|
  break if ch != '-'
  count = count + 1
end

# => 5


"-----xxx---xxx---".sub(/^-+/, '')
# => "xxx---xxx---"
于 2012-06-26T10:36:22.143 回答
-1

阅读Ruby 字符串去除定义的字符https://stackoverflow.com/a/3166005/284795

然后比较裸字符串和原字符串的长度

于 2012-06-26T10:29:27.627 回答