1. ホーム
  2. ruby

[解決済み] Rubyで新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?

2022-01-25 15:05:38

質問

これは、私が今持っているものです - それがやっている仕事に対してあまりにも冗長に見えます。

@title        = tokens[Title].strip! || tokens[Title] if !tokens[Title].nil?

tokensはCSVの行を分割して得た配列とする。 ここで、stripやchompなどの関数は、文字列が変更されていない場合はすべてnilを返す

"abc".strip!    # => nil
" abc ".strip!  # => "abc"

コピーを作成せずに、余分な先頭または末尾のスペースを含む場合、それをトリミングすると言うRubyの方法は何ですか?

をしたい場合、より醜くなる。 tokens[Title].chomp!.strip!

解決するには?

あなたが欲しいのは

@title = tokens[Title]
@title.strip!

#strip! メソッドは nil は何もストリップされなかった場合、そしてストリップされた場合は変数そのものを返します。

Rubyの規格では、エクスクラメーションマークが付いたメソッドは、その場所の変数を変更します。

お役に立てれば幸いです。

更新しました。 から出力されます。 irb を実証する。

>> @title = "abc"
=> "abc"
>> @title.strip!
=> nil
>> @title
=> "abc"
>> @title = " abc "
=> " abc "
>> @title.strip!
=> "abc"
>> @title
=> "abc"