目的別のRuby文字列操作メソッド一覧
文字列の作成
新しい文字列オブジェクトを生成する方法です。
メソッド / 構文 | 説明 | コード例 |
---|---|---|
"..." (ダブルクォート) |
最も一般的な文字列リテラル。式展開 (#{...} ) とバックスラッシュ記法 (\n , \t など) が有効。 |
|
'...' (シングルクォート) |
式展開と一部のバックスラッシュ記法 (\\' と \\\\ 以外) が無効な文字列リテラル。 |
|
%q{...} , %q(...) , etc. |
シングルクォート相当の文字列リテラル。区切り文字は {} , () , [] , <> や他の任意の非英数字を使用可能。 |
|
%Q{...} , %{...} , etc. |
ダブルクォート相当の文字列リテラル。式展開とバックスラッシュ記法が有効。区切り文字は %q と同様。 |
|
ヒアドキュメント (<<IDENTIFIER ) |
複数行の文字列を記述するのに便利。デフォルトでダブルクォート相当 (式展開可)。<<-'IDENTIFIER' でインデントを無視、<<'IDENTIFIER' でシングルクォート相当 (式展開不可)。 |
|
String.new(str = "") |
新しい空の文字列、または指定した文字列のコピーを作成する。 |
|
文字列の連結 🔗
複数の文字列を結合する方法です。
メソッド | 説明 | コード例 |
---|---|---|
+ (other_str) |
新しい文字列として、self と other_str を連結したものを返す。(非破壊的) |
|
<< (obj) / concat(obj, ...) |
self の末尾に obj (文字列または整数 – 文字コードとして) を連結する。(破壊的) concat は複数の引数を取れる。 |
|
prepend(other_str, ...) |
self の先頭に other_str を連結する。(破壊的) 複数の引数を取れる。 |
|
式展開 ("#{...}" ) |
ダブルクォート文字列内で変数の内容などを埋め込む際に、事実上の連結が行われる。 |
|
* (integer) |
文字列を指定された回数繰り返した新しい文字列を返す。(非破壊的) |
|
文字列の長さ・空判定📏
文字列の長さ(文字数またはバイト数)を取得したり、空かどうかを判定したりする方法です。
メソッド | 説明 | コード例 |
---|---|---|
length / size |
文字列の文字数を返す。多バイト文字も1文字としてカウントする。 |
|
bytesize |
文字列のバイト数を返す。エンコーディングによって結果が変わる。 |
|
empty? |
文字列が空 (長さが0) であれば true を、そうでなければ false を返す。 |
|
文字列の比較 🤝
文字列同士を比較する方法です。
メソッド / 演算子 | 説明 | コード例 |
---|---|---|
== (other) |
内容が等しい場合に true を返す。大文字小文字は区別される。 |
|
eql?(other) |
== と同様に内容を比較する。ハッシュのキー比較などで使われる。 |
|
equal?(other) |
同一のオブジェクトを指している場合に true を返す (オブジェクトIDの比較)。 |
|
casecmp(other) |
大文字小文字を区別せずに比較する。self が other より小さい場合は負の値、等しい場合は 0、大きい場合は正の値を返す。nil を返す場合は比較不能。 |
|
casecmp?(other) |
大文字小文字を区別せずに比較し、等しい場合に true 、そうでない場合に false を返す。 |
|
<=> (other) |
辞書順で比較する。self が other より小さい場合は -1、等しい場合は 0、大きい場合は 1 を返す。大文字小文字は区別される。比較不能な場合は nil を返す。 |
|
< , <= , > , >= |
<=> を利用した辞書順比較の結果を真偽値で返す。 |
|
文字列の検索・置換 🔍
文字列内から特定のパターンを検索したり、置換したりする方法です。
メソッド | 説明 | コード例 |
---|---|---|
include?(substring) |
指定した部分文字列 substring が含まれていれば true を返す。 |
|
index(pattern, offset = 0) |
指定した pattern (文字列または正規表現) が最初に現れる位置 (インデックス) を返す。見つからない場合は nil を返す。offset で検索開始位置を指定できる。 |
|
rindex(pattern, offset = length) |
指定した pattern が最後に現れる位置を返す。見つからない場合は nil を返す。offset で検索終了位置を指定できる。 |
|
start_with?(prefix, ...) |
指定した接頭辞 prefix のいずれかで始まっていれば true を返す。 |
|
end_with?(suffix, ...) |
指定した接尾辞 suffix のいずれかで終わっていれば true を返す。 |
|
sub(pattern, replacement) sub(pattern) { |match| ... } |
最初に pattern にマッチした部分を replacement またはブロックの評価結果で置換した新しい文字列を返す。(非破壊的) |
|
sub!(pattern, replacement) sub!(pattern) { |match| ... } |
最初に pattern にマッチした部分を置換する。(破壊的) 置換が行われた場合は self を、行われなかった場合は nil を返す。 |
|
gsub(pattern, replacement) gsub(pattern) { |match| ... } |
pattern にマッチした全ての部分を置換した新しい文字列を返す。(非破壊的) |
|
gsub!(pattern, replacement) gsub!(pattern) { |match| ... } |
pattern にマッチした全ての部分を置換する。(破壊的) 置換が行われた場合は self を、行われなかった場合は nil を返す。 |
|
scan(pattern) scan(pattern) { |match| ... } |
pattern にマッチした部分文字列の配列を返す。ブロックが与えられた場合は、マッチごとにブロックを実行し self を返す。 |
|
match(pattern, pos = 0) |
pattern (文字列または正規表現) にマッチするかどうかを調べる。マッチした場合、MatchData オブジェクトを返す。マッチしない場合は nil を返す。pos で検索開始位置を指定。 |
|
match?(pattern, pos = 0) |
match と同様だが、マッチした場合は true 、しない場合は false を返す。MatchData オブジェクトは生成しないため、単純な存在確認にはこちらが効率的。 |
|
文字列の分割・結合 ✂️
文字列を区切り文字で分割して配列にしたり、配列要素を結合して文字列にしたりする方法です。
メソッド | 説明 | コード例 |
---|---|---|
split(pattern = $;, limit = 0) |
文字列を pattern (文字列または正規表現) で分割し、部分文字列の配列を返す。pattern 省略時は空白文字で分割。limit で分割数を制限できる。 |
|
partition(pattern) |
文字列を pattern (文字列または正規表現) で最初にマッチした箇所で3つに分割し、[マッチ前, マッチ部分, マッチ後] の配列を返す。マッチしない場合は [元の文字列, “”, “”] を返す。 |
|
rpartition(pattern) |
partition と似ているが、最後にマッチした箇所で分割する。 |
|
lines(separator = $/, chomp: false) |
文字列を行ごとに分割し、各行を要素とする配列を返す。separator で区切り文字を指定可能。chomp: true で各行末尾の改行文字を削除。 |
|
chars |
文字列を一文字ずつに分割し、各文字を要素とする配列を返す。 |
|
codepoints |
各文字のコードポイント (整数) の配列を返す。 |
|
bytes |
各バイトの値を表す整数 (0-255) の配列を返す。 |
|
Array#join(separator = $,) |
(配列のメソッドだが関連深いため記載) 配列の要素を文字列に変換し、separator で連結した文字列を返す。 |
|
文字列の抽出・部分文字列 🧩
文字列の一部を抜き出す方法です。
メソッド / 構文 | 説明 | コード例 |
---|---|---|
[] (index) |
指定した index (整数) の位置にある1文字を返す。負のインデックスは末尾から数える。範囲外なら nil 。 |
|
[] (start, length) |
start の位置から length 文字分の部分文字列を返す。length が負なら nil 。範囲外なら nil または部分的な文字列。 |
|
[] (range) |
range (範囲オブジェクト n..m や n...m ) で指定された範囲の部分文字列を返す。 |
|
[] (substring) |
文字列内に substring が存在すれば、その substring 自身を返す。存在しなければ nil を返す。 |
|
[] (regexp, capture = 0) |
正規表現 regexp に最初にマッチした部分文字列を返す。capture に整数を指定すると、対応するキャプチャグループの内容を返す。マッチしなければ nil 。 |
|
slice(index) slice(start, length) slice(range) slice(substring) slice(regexp, capture = 0) |
[] と同じ機能を持つメソッド。(非破壊的) |
|
slice!(index) slice!(start, length) slice!(range) slice!(substring) slice!(regexp, capture = 0) |
指定した部分を文字列から削除し、削除した部分文字列を返す。(破壊的) マッチ/指定部分がない場合は nil を返す。 |
|
文字列の変換 ↔️
大文字・小文字変換など、文字列の内容を変換する方法です。
メソッド | 説明 | コード例 |
---|---|---|
upcase |
全てのアルファベットを大文字に変換した新しい文字列を返す。(非破壊的) |
|
upcase! |
全てのアルファベットを大文字に変換する。(破壊的) 変更があれば self を、なければ nil を返す。 |
|
downcase |
全てのアルファベットを小文字に変換した新しい文字列を返す。(非破壊的) |
|
downcase! |
全てのアルファベットを小文字に変換する。(破壊的) 変更があれば self を、なければ nil を返す。 |
|
capitalize |
先頭の文字を大文字に、残りを小文字に変換した新しい文字列を返す。(非破壊的) |
|
capitalize! |
先頭の文字を大文字に、残りを小文字に変換する。(破壊的) 変更があれば self を、なければ nil を返す。 |
|
swapcase |
大文字と小文字を入れ替えた新しい文字列を返す。(非破壊的) |
|
swapcase! |
大文字と小文字を入れ替える。(破壊的) 変更があれば self を、なければ nil を返す。 |
|
reverse |
文字列の文字の順序を逆にした新しい文字列を返す。(非破壊的) |
|
reverse! |
文字列の文字の順序を逆にする。(破壊的) 常に self を返す。 |
|
tr(from_str, to_str) |
from_str に含まれる文字を、対応する to_str の文字に置換した新しい文字列を返す。(非破壊的) 範囲指定 (a-z ) や否定 (^ ) も可能。 |
|
tr!(from_str, to_str) |
tr の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
tr_s(from_str, to_str) |
tr と同様に置換後、連続する置換後の文字を一つにまとめる。(非破壊的) |
|
tr_s!(from_str, to_str) |
tr_s の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
squeeze(other_str = nil) |
連続する同じ文字を1文字に圧縮した新しい文字列を返す。(非破壊的) 引数 other_str が指定された場合、その文字セットに含まれる文字のみを対象とする。範囲指定、否定も可能。 |
|
squeeze!(other_str = nil) |
squeeze の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
文字列のフォーマット 🎨
数値を埋め込んだり、特定のフォーマットに合わせて文字列を整形したりする方法です。
メソッド / 演算子 | 説明 | コード例 |
---|---|---|
% (args) |
sprintf 形式のフォーマット文字列に従って、args (単一の値または配列) を埋め込んだ新しい文字列を返す。 |
|
sprintf(format, *args) format(format, *args) |
C言語の printf ライクな書式指定文字列 format に従って、引数 args をフォーマットした文字列を返す。(Kernelメソッド) |
|
文字列のパディング・トリミング 🧹
文字列の左右に文字を追加して長さを揃えたり、不要な空白文字などを除去したりする方法です。
メソッド | 説明 | コード例 |
---|---|---|
center(width, padstr = ' ') |
文字列が指定した width になるように、左右に padstr を追加して中央揃えにした新しい文字列を返す。元の文字列が width より長い場合はそのまま返す。 |
|
ljust(width, padstr = ' ') |
文字列が指定した width になるように、右側に padstr を追加して左揃えにした新しい文字列を返す。 |
|
rjust(width, padstr = ' ') |
文字列が指定した width になるように、左側に padstr を追加して右揃えにした新しい文字列を返す。 |
|
strip |
文字列の先頭と末尾にある空白文字 (スペース、タブ、改行など) を取り除いた新しい文字列を返す。 |
|
strip! |
strip の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
lstrip |
文字列の先頭にある空白文字を取り除いた新しい文字列を返す。 |
|
lstrip! |
lstrip の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
rstrip |
文字列の末尾にある空白文字を取り除いた新しい文字列を返す。 |
|
rstrip! |
rstrip の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
chomp(separator = $/) |
文字列の末尾にある区切り文字 (デフォルトは改行) を取り除いた新しい文字列を返す。区切り文字がない場合は何もしない。 |
|
chomp!(separator = $/) |
chomp の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
chop |
文字列の最後の1文字を削除した新しい文字列を返す。末尾が “\r\n” の場合は両方を削除する。空文字列に対しては空文字列を返す。 |
|
chop! |
chop の破壊的バージョン。空文字列以外は常に self を返す。空文字列の場合は nil を返す。 |
|
delete(other_str, ...) |
引数で指定された文字セットに含まれる文字を全て削除した新しい文字列を返す。(非破壊的) 範囲指定、否定も可能。 |
|
delete!(other_str, ...) |
delete の破壊的バージョン。変更があれば self を、なければ nil を返す。 |
|
clear |
文字列を空にする。(破壊的) |
|
文字コード・エンコーディング 🔠
文字列のエンコーディングを取得・変換する方法です。
メソッド | 説明 | コード例 |
---|---|---|
encoding |
文字列のエンコーディング (Encoding オブジェクト) を返す。 |
|
encode(encoding, **options) encode(dst_encoding, src_encoding, **options) |
指定したエンコーディングに変換した新しい文字列を返す。(非破壊的) オプションで変換エラー時の処理などを指定できる。 |
|
encode!(encoding, **options) encode!(dst_encoding, src_encoding, **options) |
encode の破壊的バージョン。文字列自身のエンコーディングを変換する。 |
|
force_encoding(encoding) |
文字列のバイト列はそのままで、エンコーディング情報のみを変更する。(破壊的) バイト列とエンコーディングが一致しない場合、後続の操作でエラーになる可能性がある。 |
|
valid_encoding? |
文字列のバイト列が、自身のエンコーディングとして妥当であれば true を返す。 |
|
Integer#chr(encoding = default) |
(整数のメソッドだが関連深いため記載) 整数 (コードポイント) に対応する文字を含む文字列を返す。エンコーディングを指定可能。 |
|
その他便利なメソッド ✨
上記カテゴリに含まれない、便利な文字列操作メソッドです。
メソッド | 説明 | コード例 |
---|---|---|
count(other_str, ...) |
引数で指定された文字セットに含まれる文字が、文字列中にいくつ含まれるかを数える。範囲指定、否定も可能。文字セットの共通部分や重複は考慮されない。 |
|
sum(n = 16) |
文字列の簡単なチェックサムを計算する。(nビットのチェックサム) 主に簡易的な比較用。 |
|
ord |
文字列の先頭文字のコードポイント (整数) を返す。 |
|
intern / to_sym |
文字列に対応するシンボル (Symbol オブジェクト) を返す。シンボルが存在しなければ新たに作成する。 |
|
succ / next |
文字列の「次の」文字列を返す。(非破壊的) アルファベットや数字が繰り上がる。 |
|
succ! / next! |
succ / next の破壊的バージョン。 |
|
upto(max, exclusive = false) { |s| ... } |
self から max まで、succ を呼び出しながらブロックを実行する。exclusive が true なら max は含まない。 |
|
dump |
文字列リテラルのように、特殊文字や制御文字をエスケープした表現の文字列を返す。デバッグなどに有用。 |
|
undump |
dump された形式の文字列を元の文字列に戻す。 |
|
unpack(format) |
バイナリデータを指定したフォーマットに従って配列に変換する。Array#pack の逆操作。ネットワーク通信やバイナリファイル操作で使用。 |
|
hex |
文字列を16進数として解釈し、整数に変換する。先頭の 0x や _ は無視される。 |
|
oct |
文字列を8進数として解釈し、整数に変換する。先頭の 0 や _ は無視される。 |
|
to_i(base = 10) |
文字列を整数に変換する。基数 (2〜36) を指定できる。変換できない文字以降は無視される。 |
|
to_f |
文字列を浮動小数点数 (Float) に変換する。変換できない文字以降は無視される。 |
|
to_r |
文字列を有理数 (Rational) に変換する。”1/3″, “0.5” などの形式を解釈。 |
|
to_c |
文字列を複素数 (Complex) に変換する。”1+2i”, “3-4j”, “5i” などの形式を解釈。 |
|
コメント