Ruby 資料一覧
データ操作
2007/8/19更新
対応バージョン: 1.8
ASCII文字 - コード値相互変換
ASCII文字をコード値に変換するには文字列のうち1文字だけを参照すればよい。
s = "AB" p s[0] => 65 p s[1] => 66
逆にコード値をASCII文字に変換するには以下のような方法がある。
組込み関数のsprintf、format
Integer#chrメソッド
String#%メソッド
p sprintf("%c", 65) => "A" p format("%c", 66) => "B" p 67.chr => "C" p "%c" % 68 => "D"
これを応用すれば、例えばExcelのセル記号(A,B,C...)を10進から変換することも簡単にできる。
def num2excel(num) high = num / 26 # セル番号の上位を取り出す row = num % 26 # セル番号の下位を取り出す if high > 0 # セル番号が27以上の場合 high_char = (high + 64).chr # セル番号上位を文字列に(A〜Z) else # セル番号が26以下の場合 high_char = "" # セル番号上位は不要 end row_char = (row + 65).chr # セル番号下位を文字列に(A〜Z) out = sprintf("%s%s", high_char, row_char) # セル番号上位+下位を結合 return out end 256.times {|i| # Excel2003の最大セル数 char = num2excel(i) puts sprintf("%03d = %s\n", i + 1, char) } (結果) 001 = A 002 = B : 025 = Y 026 = Z 027 = AA 028 = AB : 255 = IX 256 = IV
文字列をURLエンコードする
CGI.escapeを使用する。
require "cgi" p CGI.escape("@##") => "%40%23%23"
11
文字列を実体参照化する
2007/8/19
1.8
HTMLやXMLの中でエスケープすべき文字「<」「>」「&」「"」については以下のように個別に実体参照化してもよいが、
line = "<エスケープすべき文字列>" line.gsub!(/</, "<"); line.gsub!(/>/, ">"); line.gsub!(/&/, "&"); line.gsub!(/"/, """);
CGI.escapeHTMLを使用すればもっと簡単に処理できる。
require "cgi" p CGI.escapeHTML("<s>try & error</s>") => "<s>try & error</s>"