2

いくつかのルール: 大文字を使用する必要があります (大文字やその他の表現は使用できません)。

以下にこだわる:

文字列 = <<-HERE
              私はタコスが大好きです。聞こえる
   彼らは美味しくて栄養価が高いです

ここ

各行の最初の単語を空白で大文字にする必要があり、それを行う方法を理解するのに苦労しています:

出力は次のようになります。

              私はタコスが大好きです。聞こえる
   彼らは美味しくて栄養価が高いです

ガイダンスやヘルプをいただければ幸いです。答えではなく、正しい方向に点を取ります!

4

3 に答える 3

6

これは、あなたが求めたことを行うワンライナーです。

string.gsub(/^\s*\w/) {|match| match.upcase }

「大文字にしない」と言ったことは知っていますが、このコンテキストでは、最初の文字のみを大文字にしています。ご不明な点がございましたら、お知らせください。

また、他の回答に対するコメントに対処するためgsub!に、コピーを作成せずに文字列をその場で変更するためにいつでも使用できます。

于 2013-01-23T03:13:10.993 に答える
3
string.gsub!(/^\s*\w/){|match| match.upcase}

これにより、新しい文字列を作成せずに必要なことが行われます。

于 2013-01-23T03:16:24.063 に答える
1

これは機能しますか?

string = <<-HERE
              i love tacos.  I hear
   they are delicious and nutritious

HERE

string.gsub!(/(^\s*)(\w)/) do |match|
  $1 << $2.capitalize
end

これが行おうとしているのは、改行で文字列を分割し、最初の文字を検索し、それを大文字にして、フラグメントを再結合することです。

これにより、次のものが生成されます。

>           I love tacos.  I hear
   They are delicious and nutritious
于 2013-01-23T02:49:21.030 に答える