string

全角半角,ひらがなカタカナの変換

require 'jcode' p "ひらがなカタカナ112934ンァヲ".tr('a-zA-Zァ-ン0-9', 'a-zA-Zぁ-ん0-9') #=> "ひらがなかたかな112934んぁを" jocdeを入れないと全角文字を正しく扱えない.

文字コードの変換

require 'kconv' str = "文字コード" str_sj = str.tosjis str_u8 = str.toutf8 p str.kconv(Kconv::UTF8, Kconv::SJIS) # s-jisからutf8に変換

#文字コードとの比較? p ("abc"[1]==?b)? "yes": "no" #ダブルクォートのエスケープを軽減 str = %q(XYZZYX,"","xxx","zzz, yyy","a \"fff\" aaa,",2,"yyy, qqq eee"); p str #=> "XYZZYX,\"\",\"xxx\",\"zzz, yyy\",\"a \\\"fff\\\" aaa,\",2,\"yyy, qqq e…

csv形式のデータを解析する

# 読み込み require 'csv' CSV.open( inputfile, 'r' ) do |row| p row end # 書き込み CSV.open( outputfile, 'w', "\t") do |writer| writer << row end で,できるらしい.未テスト

文字列の先頭と末尾の空白を削除する

str = " abcXYZdefABCasfgYAb " p str.sub(/^\s+/, "").sub(/\s+$/, "") # 正規表現 p str.strip() # 専用命令

ヒアドキュメント

TODO: そのうち調べる

文字列を大文字/小文字にする

str = "abcXYZdefABC" p str.upcase p str.downcase # 適当に大文字/小文字に変換する str = 'abcxyzdefabcasfgyabjahisfaaaewiyfet' p str.gsub(/./) {|x| (rand(100)<50)? x.downcase: x.upcase } #=> "abCxYZdEfabCASFgYABjahiSFaAAEWiyFEt"

タブを空白に,空白をタブに変える

def tabify(str) s = untabify(str) # タブが含まれていると位置がズレる a = s.scan(/.{1,4}/) # タブ幅4 a = a.map {|x| x.sub(/ +\z/,"\t") } a.join('') end def untabify(str) tab_size = 4 # タブ幅4 a = str.split(/(\t)/) a.inject(s='') {|x,y| x <…

文字単位,単語単位で反転する

p "abcdef".reverse p "abc def ghi jklmn opqr".split(' ').reverse.join(' ') p "日本語の反転".scan(/./).reverse.join('') こんなの使わないんじゃ…

文字列を文字コードの配列に変換する.またその逆

a = "abcdef".unpack("c*") p a.pack("c*") # 1文字単位で処理する str = "abcdef" str.each_byte {|x| p ":#{x}"} str.gsub(/./) {|x| p ";#{x}"} p str.scan(/./) # 1文字ずつ配列にする

部分文字列を取りだす

str = "abcdefghijklmn" # mからn番目の文字までを取り出す p str[2..4] # m番目からn文字を取り出す p str[2,4] # m番目以降のすべてを取り出す. p str[5..-1] # 指定部分を置き換える.長さが違っていてもよい str[2,4] = "XYZ" p str # str[0,1] = "" # …