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 で部分文字列を抽出する
文字列の中から特定の部分文字列を見つけて、ユーザーからの入力を見つけてサニタイズすることで、悪意のあるコードを回避できます。 部分文字列は、次のようなさまざまな方法を使用して見つけることができます。
- Ruby
include?()
メソッド。 - 正規表現方法。
- 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
出力:
メイン文字列から部分文字列を検出できますが、覚えておくべきことの 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
出力:
RegEx メソッドを使用して文字列から必要な部分文字列を見つけ、文字列内の部分文字列の位置を返すこともできます。 部分文字列が見つからない場合は、nil
が返されます。
文字列要素リファレンス []
Rubyのメソッド
Ruby の文字列参照メソッドは、文字列、インデックス値、または正規表現を 1 対の角括弧内に渡します。
コード:
# ruby
mainStr = 'spam'
puts mainStr['spam']
puts mainStr['[not-spam]']
出力:
チェック部分文字列がメイン文字列内に存在する場合は元の文字列を返し、サブ文字列がメイン文字列内に存在しない場合は nil
を返します。
正規表現の場合:
# ruby
mainStr = 'spam'
puts mainStr[/spam/]
出力:
Ruby での部分文字列の削除または置換
メイン文字列から特定の部分文字列を置換または削除する必要がある場合は、単純な割り当て方法を使用できます。 index メソッドを使用して値を変更できます。
コード:
# ruby
mainStr="Hello World!"
mainStr[0..4] = "Bye"
puts mainStr
出力:
インデックス メソッドを使用して、文字列の一部に値を割り当てるだけで、メイン文字列の特定の部分を置換または削除します。