Ruby入門4、文字列の扱いまとめPart1~これからにRubyに乗り換えする人へ~

| コメント(0) | トラックバック(0)

今回はRubyの文字列操作について勉強してみたのでまとめを公開してみます。

ruby
=begin
日本語を利用する場合、エンコーティング表記を先頭につける
Ruby 1.8
#! /usr/local/bin/ruby -Ku
#   -Ke   EUC-JP
#   -Ks   Shift_JIS
#   -Ku   UTF-8

Ruby 1.9
# -*- coding: utf-8 -*-
# -*- coding: euc-jp -*-
# -*- coding: shift_jis -*-
=end

# 文字列の結合
str1= "ぼく"
str2  = "ドザエモン"
str1  + str2                     # => "ぼくドザエモン"
str1.encode("Shift_JIS")  + str2
   # => Encoding::CompatibilityError: incompatible character encodings: Shift_JIS and UTF-8# 

# 文字の長さ
# 
"abcd".length                   # => 4
ja = "日本語"                   # 
ja.length                       # => 3

ja.bytesize                     # 9
ja.encode("UTF-8").bytesize     # 9

# 文字列を抜き出す
# 
str = "abcdefg"
str[0]                          # => a
str[1]                          # => b
ja = "あいうえお"
ja[0]                           # => あ
# 0文字から3文字抜き出す
ja[0,3]                         # => "あいう"
ja[0..2]                        # => "あいう"
ja[0...3]                       # => "あいう"
str = "1234"
str[-4,2]                       # => "10"

# 文字列書き換え
#
str = "焼肉定食"
str = str.dup; str[0,2] = "うどん";str # => "うどん定食"

# 文字列取り除き
# 
str = "焼肉定食"
str = str.dup; str.slice!(0,2);str # => "定食"

# 文字列挿入
# 
str = "焼肉定食"
str = str.dup;str.insert 2 ,"スーパー" ;str
    # => "焼肉スーパー定食"

# 文字列繰り返し
#
str ="ハイ!"
str * 3                         # => "ハイ!ハイ!ハイ!"
"-" * 10                        # => "----------"

# 文字反転
# 
str = "てぶくろ"
str.reverse                     # => "ろくぶて"

# 文字列の比較
#
str = "インキュベーター"
str == str                      # => true
str == str.encode("EUC-JP")     # => false
# <=> 演算子
#    0  等しい
#    -1 左が小さい
#    1: 左が大きい
# 
"SMTP" <=> "SMTP"               # => 0
"HTTP" <=> "IMAP"               # => -1
"SMTP" <=> "IMAP"               # -> 1

# 文字列内でruby展開
#   #{} でくるむ
#
str = "ルビリスト"
"私は、「#{str}」である。"  # => "私は、「ルビリスト」である。"
"\#{str}"                   # \を付けるとエスケープ
'#{str}'                    # シングルは無効

# 文字列のフォーマット sprintf
#  Cと同様に記載可能
#
#  %d    整数
#  %g %f 浮動点少数
#  %b    2進数
#  %o    8進数
#  %x %X 16進数
#  %c    文字
#  %s    Object#to_s により文字列化
#  %p    Object#inspect により文字列化
# 
sprintf "%s =  %d  + %g" , "hoge" ,10, 0.1
    # => "hoge =  10  + 0.1"

"%08d" %  12345  # こういう記法もできる
    # => "0000012345"

"%5s" % "="                     # => "    =" 右揃え
"%-5s" % "="                    # => "=    " 左揃え

# 文字列を1文字ごとに処理
#
#ruby 1.8の場合
"若さゆえの過ち".split(//) 
"若さゆえの過ち".scan(/./) #ruby 1.8
    # => ["若", "さ", "ゆ", "え", "の", "過", "ち"]
#ruby 1.8.7以降
arr = []
"そんな大人修正してやる".each_char { |x| arr << x}
arr # => ["そ", "ん", "な", "大", "人", "修", "正", "し", "て", "や", "る"]

# 文字列を1文字ごとに処理
#
h = "HTTP/1.1 200 OK\nContent-Type: text/html\n"
h.each_line{ |x| puts "http header: #{x}"}
    # => http header: HTTP/1.1 200 OK
    # => http header: Content-Type: text/html

# 1byteごとに処理
#
arr = []
"1234567890".each_byte { |x| p  x }

# 大文字,小文字
#
s = "This is a Pen"
# 大文字
s.upcase                        # => "THIS IS A PEN"
# 小文字
s.downcase                      # => "this is a pen"
# 先頭の文字を大文字、残りを小文字
s = "ruby"
s.capitalize                    # => "Ruby"
# 大文字と小文字の入れ替え
s.swapcase                      # => "rUBY"
# 破壊method
s = "This is a Pen"
s2 = s
s.upcase!                       # => "THIS IS A PEN"
s.upcase!                       # => nil
s                               # => "THIS IS A PEN"
s.downcase!                     # => "this is a pen"
s.downcase!                     # => nil
s.capitalize!                   # => "This is a pen"
s.capitalize!                   # => nil
s.swapcase!                     # => "tHIS IS A PEN"
s.swapcase!                     # => "This is a pen"
s                               # => "This is a pen"

# 文字の位置寄せ (center,left,right)
#
s = "Ruby入門"
# 中央
s.center(15)                    # => "    Ruby入門     "
# 左
s.ljust(15)                     # => "Ruby入門         "
# 右
s.rjust(15)                     # => "         Ruby入門"
# 指定文字での寄せ
s.center(15,":")                # => "::::Ruby入門:::::"
s.ljust(15,":")                 # => "Ruby入門:::::::::"
s.rjust(15,":")                 # => ":::::::::Ruby入門"

Pert2に続く。

・絶賛おすすめ参考書

関連記事

トラックバック(0)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/40

コメントする

PR

PR





検索

Loading

メニュー

twitter