Ruby - 基本的な文法 - String 文字列

 クラウディア
1. 概要
2. 文字列の分割 split
3. 検索 include?
4. 文字列の削除 delete
5. 配列のような使い方
6. コーテーションの違い
7. 文字列の連結

1. 概要

 ruby には、いわゆる、整数や実数の型というのはなく、型に相当するものはクラスしかないわけで。  文字列を扱うとすべては基本 String クラスになるようなのです。  String クラスの詳細は以下でどうぞ。
Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > String クラス 

2. 文字列の分割 split

 他の言語でもおなじみ split

str.split(pattern = $;, [limit])
 引数 pattern を区切り文字として文字列を分割し、配列を返します。  引数の指定のしかたによってさまざまな分割ができます。  分割できなかったときは、要素が文字列1つだけの配列を返します。
string1 = 'a=b'

array1 = string1.split('=')

array1.each do | value |
  puts("#{value}")
end

 上記のソースを実行すると下記の結果が得られます。
a
b

3. 検索 include?

string1 = 'aabbccvddeeffgg'
string2 = 'zzzzzabczzzzzzz'
string3 = 'abc'

if (string1.include?(string3))
  puts("#{__LINE__} string1=[#{string1}] は string3=[#{string3}] を含む");
else
  puts("#{__LINE__} string1=[#{string1}] は string3=[#{string3}] を含まない");
end

if (string2.include?(string3))
  puts("#{__LINE__} string2=[#{string2}] は string3=[#{string3}] を含む");
else
  puts("#{__LINE__} string2=[#{string2}] は string3=[#{string3}] を含まない");
end

 上記のソースを実行すると下記の結果が得られます。
8 string1=[aabbccvddeeffgg] は string3=[abc] を含まない
12 string2=[zzzzzabczzzzzzz] は string3=[abc] を含む

4. 文字列の削除 delete

 わたしこれを部分文字列を削除するものと勘違いいたしておりました。  そうではなくて delete の引数で指定している文字を削除するものでありました。
string1 = 'aabbccvddeeffgg'

puts("#{__LINE__} string1=[#{string1}]")

string2 = string1.delete('abc')

puts("#{__LINE__} string1=[#{string1}] string2=[#{string2}]")

string2 = string1.delete!('efg')

puts("#{__LINE__} string1=[#{string1}] string2=[#{string2}]")

 上記のソースを実行すると下記の結果が得られます。
3 string1=[aabbccvddeeffgg]
7 string1=[aabbccvddeeffgg] string2=[vddeeffgg]
11 string1=[aabbccvdd] string2=[aabbccvdd]

5. 配列のような使い方

 文字列を [] で表現して、ちょっと C言語の char 型に似たような扱い(あくまでも似たような・・・であって全然別物ではあります)ができます。  [開始位置,文字数] で表現します。開始位置をマイナスにすると末尾からの文字数になります。
string1 = 'abcdefghij'

puts("#{__LINE__} string1の長さ=[#{string1.length}]");
puts("#{__LINE__} string1の0開始から2文字分=[#{string1[0,2]}]");
puts("#{__LINE__} string1の1から2文字分=[#{string1[1,2]}]");

puts("#{__LINE__} string1の末尾から2文字分=[#{string1[-1,2]}]");
puts("#{__LINE__} string1の末尾2から2文字分=[#{string1[-2,2]}]");


 上記のソースを実行すると下記の結果が得られます。
3 string1の長さ=[10]
4 string1の0開始から2文字分=[ab]
5 string1の1から2文字分=[bc]
7 string1の末尾から2文字分=[j]
8 string1の末尾2から2文字分=[ij]

6. コーテーションの違い

 '(シングルコーテーション)と "(ダブルコーテーション)の違いは、他の多くのスクリプト言語と同じく。  '(シングルコーテーション)は変数の展開をしない。  "(ダブルコーテーション)は変数の展開をする。  ということのようです。

#!/usr/bin/env ruby

value = 1

puts("#{value}")
puts('#{value}')
 を実行すると以下のようになります。

1
#{value}
 違いは歴然です。

7. 文字列の連結

 文字列の連結は、単に + の演算子でよいようです。

#!/usr/bin/env ruby

value = 'abc' + 'def'

puts("#{value}")
 を実行すると以下のようになります。

abcdef
 実際には、他の構文があって、大量の文字列連結を行うにはそちらの方が速度が速いようです。  困ったときには読もう~~~っと「Ruby の文字列連結に関して知っておくべきこと」。
earthcar(アースカー)