Ruby/文字列
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Ruby,文字列);
*目次 [#w1af3a52]
#contents
*参考情報 [#i171ee5a]
-[[Ruby]]
*配列に分割する [#pb885f1d]
**splitを使う [#wcc19383]
-splitで正規表現を指定して配列に分割できる。
"a b".split(/ /)
=> ["a", "b"]
**splitを使う(末尾をキープ) [#i32b5a39]
-splitを引数なしで使うと末尾要素が削除されてしまうのでキ...
#pre{{
str = "\t\t\n"
p str.split(/\t/) # 末尾に\rがあるので空白要素もキープさ...
str.chomp!
p str.split(/\t/) # chomp!により\nがなくなったので末尾の...
p str.split(/\t/,-1) # -1を指定すれば大丈夫。
=>
["", "", "\n"]
[]
["", "", ""]
}}
*書式を指定して出力 [#p2193f9f]
**ゼロで埋めて出力 [#m2ba0af1]
-sprintfを使う
sprintf("%03d", 7)
=> "007"
*文字コード [#i32ad762]
**Ruby 1.9以降の文字コードについて(2022/04/02(土)の理解) ...
-Rubyは文字コードの推測などは行わない。
**File.read [#n9729a5b]
-File.readで読み込んだ場合、ファイルの実際文字コードがな...
-このためSJISの場合は文字化けする。それを防ぐためにはファ...
File.read('sjis.txt', :encoding => 'SJIS')
-推測したい場合はKconv.guessが使える。
**Net::HHTTP [#hf0dca2b]
-Net::HTTPの場合 ASCII-8BITとみなしており、Content-Typeの...
-このため読み込んだ文字列を日本語正規表現とマッチさせよう...
**日本語化どうかを判定する [#cc56579a]
- ASCII以外の文字を含むかどうかで良い場合以下のメソッド...
#pre{{
def jstring?(str)
str.bytesize > str.size
end
}}
*Tips [#i62fb6e8]
**空文字の判定 [#b63f4af8]
-ActiveSupportがあれば「blank?」が使える。
-Pure Rubyの場合以下の方法が使えるか。[[Is There a Better...
str.to_s.empty?
str.to_s == ""
str.to_s.size == 0
str.to_s.length == 0
-空じゃない場合は以下の方がわかりやすいか。空白文字を空と...
str.to_s.size > 0
**文字コード変換(1.9以降) [#nbb1f7f6]
***Windowsのcmd.exeで文字化けしない方法 [#x584aac0]
-Windowsのコマンドプロンプトで文字化けしない方法
-Ruby1.9時代はUTF-8をそのまま出力すると文字化けしていたが...
#pre{{
puts Encoding.default_external => Windows-31J
puts Encoding.default_internal => nil
str = "ハロー"
puts str.encoding => UTF-8
puts str #= ハロー
}}
***Windowsの文字コード変換 [#c08933d4]
-Windowsの文字コードに変換する
#pre{{
def to_windows(str)
str.encode("Windows-31J",:undef => :replace, :invalid =...
end
}}
**文字コード変換 [#ab122e39]
***参考情報 [#o467778c]
-[[Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 ...
***kconvを使う [#eb25f2db]
***nkfを使う [#g1977dbf]
-kconvを使う方法は半角カナ→全角カナなどの自動変換が行われ...
#pre{{
#EUCに変換
euc = NKF.nkf('-exm0', str)
#SJISに変換
sjis = NKF.nkf('-sxm0', str)
#UTF-8に変換
utf8 = NKF.nkf('-wxm0', str)
#UTF-16に変換
utf16 = NKF.nkf('-w16xm0', str)
}}
''オプションの意味''
,e/s/w/w16,出力をEUC/SJIS/UTF-8/UTF-16にする
,E/S/W/W16,入力をEUC/SJIS/UTF-8/UTF-16にする
,x/X,半角カナ全角カナ変換を行わない/行う
,m0,MIME encoded-word のデコードを行わない
**ERB [#x43893d9]
-Railsでも使われているテンプレートライブラリ。
-標準ライブラリなのでRuby単体でも使用可能。
#pre{{
require 'erb'
class Person
def initialize(name)
@name = name
end
attr_accessor :name
end
str = "hoge"
person = Person.new('tanaka')
template=<<__EOM__
value = <%= str %> value2 = <%= person.name %>
__EOM__
erb = ERB.new(template)
puts erb.result(binding)
#以下が出力
value = hoge value2 = tanaka
}}
終了行:
&tag(Ruby,文字列);
*目次 [#w1af3a52]
#contents
*参考情報 [#i171ee5a]
-[[Ruby]]
*配列に分割する [#pb885f1d]
**splitを使う [#wcc19383]
-splitで正規表現を指定して配列に分割できる。
"a b".split(/ /)
=> ["a", "b"]
**splitを使う(末尾をキープ) [#i32b5a39]
-splitを引数なしで使うと末尾要素が削除されてしまうのでキ...
#pre{{
str = "\t\t\n"
p str.split(/\t/) # 末尾に\rがあるので空白要素もキープさ...
str.chomp!
p str.split(/\t/) # chomp!により\nがなくなったので末尾の...
p str.split(/\t/,-1) # -1を指定すれば大丈夫。
=>
["", "", "\n"]
[]
["", "", ""]
}}
*書式を指定して出力 [#p2193f9f]
**ゼロで埋めて出力 [#m2ba0af1]
-sprintfを使う
sprintf("%03d", 7)
=> "007"
*文字コード [#i32ad762]
**Ruby 1.9以降の文字コードについて(2022/04/02(土)の理解) ...
-Rubyは文字コードの推測などは行わない。
**File.read [#n9729a5b]
-File.readで読み込んだ場合、ファイルの実際文字コードがな...
-このためSJISの場合は文字化けする。それを防ぐためにはファ...
File.read('sjis.txt', :encoding => 'SJIS')
-推測したい場合はKconv.guessが使える。
**Net::HHTTP [#hf0dca2b]
-Net::HTTPの場合 ASCII-8BITとみなしており、Content-Typeの...
-このため読み込んだ文字列を日本語正規表現とマッチさせよう...
**日本語化どうかを判定する [#cc56579a]
- ASCII以外の文字を含むかどうかで良い場合以下のメソッド...
#pre{{
def jstring?(str)
str.bytesize > str.size
end
}}
*Tips [#i62fb6e8]
**空文字の判定 [#b63f4af8]
-ActiveSupportがあれば「blank?」が使える。
-Pure Rubyの場合以下の方法が使えるか。[[Is There a Better...
str.to_s.empty?
str.to_s == ""
str.to_s.size == 0
str.to_s.length == 0
-空じゃない場合は以下の方がわかりやすいか。空白文字を空と...
str.to_s.size > 0
**文字コード変換(1.9以降) [#nbb1f7f6]
***Windowsのcmd.exeで文字化けしない方法 [#x584aac0]
-Windowsのコマンドプロンプトで文字化けしない方法
-Ruby1.9時代はUTF-8をそのまま出力すると文字化けしていたが...
#pre{{
puts Encoding.default_external => Windows-31J
puts Encoding.default_internal => nil
str = "ハロー"
puts str.encoding => UTF-8
puts str #= ハロー
}}
***Windowsの文字コード変換 [#c08933d4]
-Windowsの文字コードに変換する
#pre{{
def to_windows(str)
str.encode("Windows-31J",:undef => :replace, :invalid =...
end
}}
**文字コード変換 [#ab122e39]
***参考情報 [#o467778c]
-[[Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 ...
***kconvを使う [#eb25f2db]
***nkfを使う [#g1977dbf]
-kconvを使う方法は半角カナ→全角カナなどの自動変換が行われ...
#pre{{
#EUCに変換
euc = NKF.nkf('-exm0', str)
#SJISに変換
sjis = NKF.nkf('-sxm0', str)
#UTF-8に変換
utf8 = NKF.nkf('-wxm0', str)
#UTF-16に変換
utf16 = NKF.nkf('-w16xm0', str)
}}
''オプションの意味''
,e/s/w/w16,出力をEUC/SJIS/UTF-8/UTF-16にする
,E/S/W/W16,入力をEUC/SJIS/UTF-8/UTF-16にする
,x/X,半角カナ全角カナ変換を行わない/行う
,m0,MIME encoded-word のデコードを行わない
**ERB [#x43893d9]
-Railsでも使われているテンプレートライブラリ。
-標準ライブラリなのでRuby単体でも使用可能。
#pre{{
require 'erb'
class Person
def initialize(name)
@name = name
end
attr_accessor :name
end
str = "hoge"
person = Person.new('tanaka')
template=<<__EOM__
value = <%= str %> value2 = <%= person.name %>
__EOM__
erb = ERB.new(template)
puts erb.result(binding)
#以下が出力
value = hoge value2 = tanaka
}}
ページ名: