Ruby で部分文字列を取得する

Hassan Ejaz 2024年2月15日
  1. Ruby の部分文字列メソッド
  2. Ruby で部分文字列を抽出する
  3. Ruby での部分文字列の削除または置換
Ruby で部分文字列を取得する

文字列は任意のバイト シーケンスを持ち、このシーケンスで動作し、すべてのプログラミング言語の基本要素の 1つです。 プログラムの基本的な構築の一部であるため、文字列の操作を把握し、文字列を使用して複雑な操作を実行する方法を知っている必要があります。

この記事では、Ruby で文字列から部分文字列を作成する方法を例を挙げて紹介します。

Ruby の部分文字列メソッド

部分文字列は、既存の文字列から取得した文字の範囲または特定の配列です。 部分文字列の操作は、ユーザーが文字列の特定の部分 (文字列の最初、最後、および中間部分など) で作業したい場合に非常に適切なアプローチです。

Ruby には部分文字列メソッドがないため、範囲と式に依存しています。 範囲を使用する場合は、部分文字列の開始インデックスと終了インデックスの間にピリオドを使用して、メイン文字列から新しい部分文字列を取得する必要があります。

部分文字列の開始点を使用する場合にのみ、2つの数値の間にコンマ (,) を使用することもできます。 2 番目の数値は、開始点から部分文字列に含めたい要素の数を表します。

範囲の例として、最初に文字列 a "virus" を調べてみましょう。これは 0 から 4 までの 5 文字です。部分文字列を逆の方法で取得したい場合は、範囲の負の端を使用できます。 文字列の長さから逆算します。

Ruby ではピリオド文字としてドット (.) を使用でき、範囲内でピリオド文字を使用できます。 2~3ピリオド使えます。

Python とは異なり、範囲内でコロン (:) を使用することはできません。 代わりに、ピリオド (.) 範囲を使用できます。

以下に示すように、上記のシナリオを使用して、Ruby で部分文字列を取得してみましょう。

コード:

# ruby

StringForSub = "virus"

StartSub = value[0..3]
MidSub = value[2..3]
EndSub = value[3..-1]

puts StartSub
puts MidSub
puts EndSub

出力:

索引付けを使用してルビでメイン文字列から部分文字列を作成する

上記の出力により、インデックス作成メソッドを使用してメイン文字列から部分文字列を簡単に作成できます。

範囲内でコンマ (,) を使用する場合は、2つの数値を使用します。 最初の数値は新しい部分文字列の開始点になり、2 番目の数値は部分文字列の長さになります。

次の例では、Ruby で部分文字列のコンマ構文を使用しています。

コード:

# ruby
mainString = "Ruby"

endSub = mainString[1,3]

puts endSub

midSub = mainString[1,2]

puts midSub

出力:

コンマを使用してルビでメイン文字列から部分文字列を作成する

新しい部分文字列の開始値と終了値を指定することで、インデックス メソッド内でコンマ (,) を使用して範囲を取得することもできます。

Ruby で部分文字列を抽出する

文字列の中から特定の部分文字列を見つけて、ユーザーからの入力を見つけてサニタイズすることで、悪意のあるコードを回避できます。 部分文字列は、次のようなさまざまな方法を使用して見つけることができます。

  1. Ruby include?() メソッド。
  2. 正規表現方法。
  3. Ruby 文字列要素リファレンス []。

Ruby include?() メソッド

この組み込みメソッドは、部分文字列を見つける最も簡単な方法です。

ユーザーが入力する情報として文字列を使用する例を見てみましょう。 コンテンツにスパム要素が含まれているかどうかを確認します。

# ruby
mainStr = 'User submitted this content. It is a spam'
 if mainStr.include?("spam")
   puts "Spam Content! Content Deleted"
 else
   puts "Content Saved"
 end

出力:

rubyを使って主文字列の部分文字列をチェック

メイン文字列から部分文字列を検出できますが、覚えておくべきことの 1つは、大文字と小文字を区別する方法であるということです。

メソッドの戻り値はブール値 (true または false) であるため、部分文字列が使用可能かどうかをそれぞれ示します。 したがって、それに応じて動作するように if-else ステートメントを実装します。

include? を使用することの欠点 メソッドは、大文字と小文字が区別され、スパムが false ステートメントを返す可能性があることです。 文字列全体を大文字または小文字に変換してから、文字列内の特定の部分文字列を見つけることが不可欠です。

大文字に変換する方法は以下の通りです。

コード:

# ruby
mainStr = 'User submitted this content. It is a SPAM!'
 if mainStr.include?("spam".upcase)
   puts "Spam Content! Content Deleted"
 else
   puts "Content Saved"
 end

出力:

大文字方式のルビを使用して主文字列の部分文字列をチェック

同じシナリオを想像してみましょう。ただし、小文字を使用する必要があります。

コード:

# ruby
mainStr = 'User submitted this content. It is a SPAM!'
 if mainStr.include?("spam".downcase)
   puts "Spam Content! Content Deleted"
 else
   puts "Content Saved"
 end

出力:

大文字方式のルビを使用して主文字列の部分文字列をチェック

ご覧のとおり、部分文字列を使用して、送信されたデータの部分文字列をチェックして、アプリケーション内に保存したくないスパムやその他の種類のコンテンツをチェックして、システムを安全にすることができます。

Ruby の RegEx メソッド

特定の部分文字列が文字列内に見つからない場合、Ruby はこのメソッドを使用して nil を返します。 このメソッドでは、単純な正規表現を使用して、文字列が指定された正規表現パターン スパム であるかどうかをチェックします。

コード:

# ruby
mainStr = 'User submitted this content. It is a spam!'
puts mainStr =~ /spam

出力:

rubyの正規表現方法

RegEx メソッドを使用して文字列から必要な部分文字列を見つけ、文字列内の部分文字列の位置を返すこともできます。 部分文字列が見つからない場合は、nil が返されます。

文字列要素リファレンス [] Rubyのメソッド

Ruby の文字列参照メソッドは、文字列、インデックス値、または正規表現を 1 対の角括弧内に渡します。

コード:

# ruby
mainStr = 'spam'
puts mainStr['spam']
puts mainStr['[not-spam]']

出力:

ruby で要素 ref を使用

チェック部分文字列がメイン文字列内に存在する場合は元の文字列を返し、サブ文字列がメイン文字列内に存在しない場合は nil を返します。

正規表現の場合:

# ruby
mainStr = 'spam'
puts mainStr[/spam/]

出力:

ruby で要素 ref を使用

Ruby での部分文字列の削除または置換

メイン文字列から特定の部分文字列を置換または削除する必要がある場合は、単純な割り当て方法を使用できます。 index メソッドを使用して値を変更できます。

コード:

# ruby
mainStr="Hello World!"

mainStr[0..4] = "Bye"

puts mainStr

出力:

インデックス方式による部分文字列置換

インデックス メソッドを使用して、文字列の一部に値を割り当てるだけで、メイン文字列の特定の部分を置換または削除します。

関連記事 - Ruby String