Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Ruby文字列メソッド(究極のガイド)

文字列は文字のシーケンスです。

文字列はオブジェクトであるため、文字列を使用して処理を行うために使用できるメソッドが多数あります。

この記事では、最も便利なRuby文字列メソッドについて説明します。 例を挙げて!

コンテンツ

  • 1文字列の長さを取得する方法
  • 2文字列が空かどうかを確認する方法
  • 3文字列補間とは何ですか?
  • 4部分文字列を抽出する方法
  • 5文字列に別の文字列が含まれているかどうかを確認する方法
  • 6Ruby文字列をパディングする方法
  • 7大文字と小文字を区別しない文字列の比較
  • 8文字列をトリミングして空白を削除する方法
  • 9弦のプレフィックスとサフィックス
  • 10文字列を文字の配列に変換する
  • 11配列を文字列に変換する
  • 12文字列を整数に変換する
  • 13文字列が数字かどうかを確認する
  • 14文字を追加する方法
  • 15Rubyで文字列の文字を反復処理する
  • 16Rubyで文字列を大文字または小文字に変換する方法
  • 17複数行の文字列を作成する方法
  • 18Gsubメソッドを使用して文字列内のテキストを置き換える方法
  • 19文字列から最後の文字を削除する方法
  • 20文字列エンコーディングを変更する方法
  • 21文字を数える
  • 22まとめ
    • 22.1関連

文字列の長さを取得する方法

簡単:

"ruby".size
# 4

lengthを使用することもできます 、 sizeの代わりに 、彼らは同じことをします。

文字列が空かどうかを確認する方法

空の文字列を長さがゼロの文字列として定義します。

このように確認できます

"".size == 0
# true

または、さらに良いのは、 empty?を使用することです。 メソッド。

"".empty?
# true

空白の文字列とは、長さがゼロであるか、空白文字のみで構成されている文字列です。

文字列補間とは何ですか?

文字列補間を使用すると、文字列を組み合わせることができます:

name = "Jesus"

puts "Hello #{name}"

一部の人々が知らないのは、補間内に実際のコードを含めることができるということです。

次に例を示します:

puts "The total is #{1+1}"

# "the total is 2"

Rubyはto_sを呼び出します 文字列補間ブロックのメソッド。これは、オブジェクトにそれ自体を文字列に変換するように指示します。

部分文字列を抽出する方法

サブストリングは文字列の小さな部分です。最初、中間、最後など、特定の部分だけが必要な場合に便利です。

Rubyで部分文字列を取得するにはどうすればよいですか?

1つの方法は、開始インデックスと、角かっこで囲まれたいくつかの文字をコンマで区切って使用することです。

このように

string = "abc123"

string[0,3]
# "abc"

string[3,3]
# "123"

最初の数字は開始インデックスです。

2番目の数字は、必要な文字数です。

「最後の文字以外のすべての文字を取得する」などの操作を行う場合は、範囲を使用することもできます。

string = "abc123"

string[0..-2]
# "abc12"

これで、最初のインデックスは引き続き開始インデックスですが、2番目のインデックスは終了インデックス(両端を含む)です。この-2 は最後から2番目の文字で、 -1 文字列の終わりです。

サブストリングを削除または置換する場合 。

あなたはこれを行うことができます:

string[0..2] = ""

p string
# "123"

とてもいいです!

文字列に別の文字列が含まれているかどうかを確認する方法

文字列が別の文字列に含まれているかどうかを確認する最も簡単な方法は何ですか?

include? 方法:

string = "Today is Saturday"

string.include?("Saturday")
# true

indexを使用することもできます 方法:

string = "Today is Sunday"

string.index("day")
# 2

このメソッドは部分的な単語を検索し、trueまたはfalseを返す代わりに、この文字列の先頭が見つかったインデックスを提供します。

この例では、 index 「今日」で「日」を見つけています。

パターン(「日」という単語を含むすべての単語など)を見つけたい場合は、正規表現を探しています。

Ruby文字列をパディングする方法

文字列を埋める1つの方法は、 rjustを使用することです。 2つの引数を持つメソッド:

binary_string = "1101"
binary_string.rjust(8, "0")

# "00001101"

右にパディングしたい場合は、 ljustを使用できます :

binary_string = "1111"
binary_string.ljust(8, "0")

# "11110000"

大文字と小文字を区別しない文字列の比較

文字列の比較では大文字と小文字が区別されるため、比較する2つの文字列が大文字と小文字が同じであることを確認する必要があります。

これを行う一般的な方法は、方程式の両辺を downcaseにすることです。 またはupcase

lang1 = "ruby"
lang2 = "Ruby"

lang1.upcase == lang2.upcase

casecmp?もあります 大文字と小文字を区別しない比較を行う方法ですが、ほとんど使用されません。

上記の例に固​​執してください。

文字列をトリミングして空白を削除する方法

ファイルやウェブサイトからデータを読み取るときに、文字列に余分な空白があることに気付く場合があります。

stripを使用して余分なスペースを削除できます 方法:

extra_space = "   test    "
extra_space.strip

# "test"

片側(左/右)から空白だけを削除したい場合は、 lstripを使用できます。 & rstrip 代わりにメソッド。

文字列のプレフィックスとサフィックス

start_with?を使用できます 文字列が特定のプレフィックスで始まるかどうかを確認するメソッド。

ここに例があります

string = "ruby programming"

string.start_with? "ruby"
# true

end_with?もあります 方法:

string = "ruby programming"

string.end_with? "programming"
# true

さらに、Ruby2.5ではdelete_prefixが導入されました & delete_suffix メソッド。これはあなたに役立つかもしれません。

ここに例があります

string = "bacon is expensive"

string.delete_suffix(" is expensive")

# "bacon"

文字列を文字の配列に変換する

split を使用すると、文字列を取得して文字の配列に分解するのが簡単です。 メソッド。

string = "a b c d"

string.split
# ["a", "b", "c", "d"]

デフォルトでは、 split 区切り文字としてスペースを使用しますが、このメソッドに引数を渡して別の区切り文字を指定できます。

カンマ区切り値(CSV)のリストを分割する方法は次のとおりです。

csv = "a,b,c,d"

string.split(",")
# ["a", "b", "c", "d"]

ただし、CSVデータを具体的に操作している場合は、標準ライブラリのCSVクラスの使用を検討することをお勧めします。このクラスは、列ヘッダーの読み取りなどを実行できるため、作業が簡単になります。

配列を文字列に変換する

文字列の配列を取得してこれらの文字列を大きな文字列に結合する場合は、 joinを使用できます。 メソッド。

arr = ['a', 'b', 'c']

arr.join
# "abc"

joinに引数を渡すこともできます 、この引数は文字区切り文字です。

arr = ['a', 'b', 'c']

arr.join("-")
# "a-b-c"

文字列を整数に変換する

"49"のような文字列を変換する場合 整数に49 to_iを使用できます メソッド。

"49".to_i

数字を含まない文字列でこれを試してみると、 0が得られることに注意してください。 。

"a".to_i
# 0

文字列が数字かどうかを確認する

文字列が整数のみで構成されているかどうかを知りたいですか?

これを行うことができます

"123".match?(/\A-?\d+\Z/)
# true

"123bb".match?(/\A-?\d+\Z/)
# false

match? メソッドはRuby2.4で導入され、 matchを使用できます (疑問符なし)古いバージョンでは。

このコードは正規表現を使用しています。翻訳させてください:

「文字列の先頭から( \ A )オプションのダッシュ(-?)があるかどうかを確認します 、負の数の場合)、そこにいくつかの数があることを確認します( \ d + )&文字列の最後まで何もありません( \ Z )。」

文字を追加する方法

既存の文字列に文字を追加することで、小さな文字列から大きな文字列を構築できます。これを文字列連結とも呼びます 。

<<を使用してこれを行う方法は次のとおりです 方法:

string = ""

string << "hello"
string << " "
string << "there"

# "hello there"

+ =は使用しないでください 文字列の連結の場合、毎回新しい文字列が作成されるため、パフォーマンスには良くありません!

Rubyで文字列の文字を反復処理する

文字列の個々の文字を操作すると便利な場合があります。

そのための1つの方法は、 each_charを使用することです。 方法:

"rubyguides".each_char { |ch| puts ch }

charsを使用することもできます 文字列を文字の配列に変換するメソッド。次に、 eachを使用できます この配列で反復します。

array_of_characters = "rubyguides".chars
# ["r", "u", "b", "y", "g", "u", "i", "d", "e", "s"]

Rubyで文字列を大文字または小文字に変換する方法

文字列をすべて大文字に変換する場合は、 upcaseを使用できます。 メソッド。

"abcd".upcase
# "ABCD"

また、小文字に変換する場合は、小文字を使用できます。 メソッド。

"ABCD".downcase
# "abcd"

複数行の文字列を作成する方法

複数行の文字列は、2つの異なる方法で作成できます。

1つはヒアドキュメントを使用することです:

b = <<-STRING
aaa
bbb
ccc
STRING

もう1つは、%Qを使用する方法です。 :

a = %Q(aaa
bbb
ccc
)

Gsubメソッドを使用して文字列内のテキストを置き換える方法

文字列内のテキストを置き換える場合は、gsubメソッドを使用します。

「犬」という言葉を「猫」に置き換えましょう:

string = "We have many dogs"

string.gsub("dogs", "cats")

# "We have many cats"

文字列を削除する場合は、空の文字列を使用してください 2番目の引数として。

string = "abccc"

string.gsub("c", "")

# "ab"

gsub メソッドは新しい文字列を返します。

元の文字列に変更を適用する場合は、 gsub!を使用できます。 メソッド。

gsubメソッド また、引数として正規表現を使用するため、正確な単語の代わりにパターンを置き換えることができます。

ここに例があります

string = "We have 3 cats"

string.gsub(/\d+/, "5")

# "We have 5 cats"

これにより、すべての数値が置き換えられます( \ d + )番号が 5の文字列 。

ブロックを使用してこのメ​​ソッドを使用するもう1つの方法:

title = "the lord of the rings"

title.gsub(/\w+/) { |word| word.capitalize }
# "The Lord Of The Rings"

gsubはどうですか vs sub

ええと、 sub gsubと同じです 、ただし、最初の一致のみが置き換えられます。

Gsubはすべての一致を置き換えます。

文字列から最後の文字を削除する方法

(Kernel#getsメソッドを使用して)ユーザーに入力を求める場合は、改行文字( \ n )があります。 )文字列の最後で、これにより文字列を直接比較できなくなります。

puts "What's your name?"
name = gets

# type something...

その余分な改行文字を削除する最良の方法( \ n chompメソッドを使用する

name = gets.chomp

Ruby 2.3以降、chompメソッドは、削除する文字を削除できるオプションの引数を取ります。

"abcd?".chomp("?")
# "abcd"

また、文字が存在しない場合は、元の文字列が返されます。

文字列エンコーディングを変更する方法

文字列は一連のバイトとして保存され、エンコーディングに基づいて表示できる文字に変換されます。

たとえば、ASCIIエンコーディングの65という数字は、文字「A」を表します。

ただし、UTF-8など、さまざまな言語(中国語など)の文字や絵文字を表現できる、より複雑なエンコーディングもあります。

文字列の現在のエンコーディングを確認するには、 encodingを使用できます。 メソッド。

"abc".encoding

# Encoding:UTF-8

ディスクからファイルを読み取ったり、Webサイトからデータをダウンロードしたりすると、エンコードの問題が発生する可能性があります。

多くの場合、 encoding を適用することで、この問題を修正できます。 。

このように

"abc".force_encoding("UTF-8")

文字を数える

count を使用すると、文字列に文字が表示される回数をカウントできます。 メソッド。

例:

str = "aaab"

str.count("a")
# 3

str.count("b")
# 1

概要

多くの文字列メソッドについて学びました 、結合と分割で文字列を配列に分割したり、gsubで文字列内のテキストを置き換えたり、ストリップして余分な空白を削除したりします。

後でこのページを参照したい場合があるので、必ずブックマークして、Rubyのすべての友達と共有してください🙂

読んでくれてありがとう!


  1. Rubyでの関数型プログラミング(完全ガイド)

    関数型プログラミングについて聞いたばかりで、いくつか質問があるかもしれません。 いいね… 関数型プログラミングとは正確には何ですか? オブジェクト指向プログラミングと比較してどうですか? Rubyで関数型プログラミングを使用する必要がありますか? これらの質問に答えて、これがどのように機能するかをよりよく理解できるようにします。 関数型プログラミングとは これは単なる流行や派手な言葉ではなく、長い間存在していた実際のプログラミングパラダイムですが、最近人気を取り戻しています。 そして、このパラダイムの背後にある基本的な考え方は、あなたが思っているよりも理解しやすいです。 関数型

  2. Ruby文字列のフォーマット

    Rubyで文字列をフォーマットする方法について話しましょう。 なぜ文字列をフォーマットしたいのですか?数値が10未満であっても、先行ゼロを使用したり(例:01、02、03…)、コンソール出力を列に適切にフォーマットしたりすることができます。 他の言語では、 printfを使用できます 文字列をフォーマットする関数です。Cを使用したことがある場合は、おそらくそのことに精通しているでしょう。 printfを使用するには フォーマット指定子のリストと変数または値のリストを定義する必要があります。 Ruby文字列フォーマット入門 sprintf はRubyでも利用できます。この投稿では、よ