1. ホーム
  2. ruby

[解決済み] Ruby、文字列から最後のN文字を削除しますか?

2022-02-26 23:35:12

質問

を削除する望ましい方法は何ですか? n の文字が含まれますか?

どのように解決するのですか?

ルビー2.5以上

Ruby 2.5からは delete_suffix または delete_suffix! を使えば、高速で読みやすい方法でこれを実現することができます。

メソッドに関するドキュメントは こちら .

サフィックスが何であるかを知っていれば、これはイディオムです(そして、ここで他の答えよりもさらに読みやすいと主張します)。

'abc123'.delete_suffix('123')     # => "abc"
'abc123'.delete_suffix!('123')    # => "abc"

さらに大幅に高速化され(ほぼ 40% を、bangメソッドで)トップアンサーと比較しています。同じベンチマークの結果です。

                     user     system      total        real
chomp            0.949823   0.001025   0.950848 (  0.951941)
range            1.874237   0.001472   1.875709 (  1.876820)
delete_suffix    0.721699   0.000945   0.722644 (  0.723410)
delete_suffix!   0.650042   0.000714   0.650756 (  0.651332)

このメソッドは現在正規表現を受け付けないため、接尾辞がわからない場合は当面の間実行できないことに注意してください。しかし、受け取った答え( update: 執筆時 ) が同じように指示するので、これは一部の人に役に立つかもしれないと思いました。