可変数の先頭のハイフンを含む文字列があり、文字列の本体にハイフンが含まれている場合と含まれていない場合があります。例えば:
--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を読む
次に、裸の紐と元の紐の長さを比較します