文字列クラス.String
クラスは任意の長さのバイト
列を扱うことができます.
String
クラスのメソッドには名前が
`!'で終るものがあります.これらのメソッドは文字
列の中身を直接変更するものです.`!'のついていな
い同じ名前のメソッドは文字列のコピーを作ってそちらを更新しま
すのでやや遅いですが,より安全です.例えば:
f = "string" print f, f.sub("str", "ski"), f => string, skiing, string print f, f.sub!("str", "ski"), f => skiing, skiing, skiing
Object
Comparable
Enumerable
new(string)
stringと同じ内容の新しい文字列を返します.
self + other
文字列の結合を行います.
self * times
文字列の繰り返し.例えば"x" * 4
は"xxxx"
を返します.
self % args
文字列のフォーマット.sprintf(self, *args)
と
ほぼ同じ.
self == other
self > other
self >= other
self < other
self <= other
文字列の比較.変数$=
の値が偽である時,比較はア
ルファベットの大文字小文字を無視して行われます.
self << other
文字列への内容の追加.
self =~ other
正規表現のマッチを行います.マッチが成功すればマッチした位置
のインデックスを,そうでなければnil
を返します.
otherが文字列であった場合には正規表現へのコンパイ
ルが行われます.
~ self
$_ =~ self
と同じです.
self[nth]
nth番目の文字(文字コードを示すFixnum)を返します.
self[start..last]
start番目の文字からlast番目の文字まで の部分文字列を返します.部分文字列は両端を含みます.
self[start, length]
startから長さlengthだけ部分文字列を返 します.
self[nth] = val
nth番目の文字をvalに変更します.文字列 がフリーズされている時には例外が発生します.
self[start..last] = val
startからlastまでの部分文字列を valに置き換えます.
self[beg, len] = val
startから長さlengthの部分文字列を valに置き換えます.
self <=> other
self
とother
を辞書順で比較して,
self
が大きい時に正,等しい時に0,小さい時に負
の整数を返します.
<<(other)
concat(other)
otherの内容を追加します.
capitalize
capitalize!
先頭の文字がアルファベットであれば大文字に変更します.
chop
chop!
文字列の最後の文字を取り除きます(終端が"\r\n"であれば2文字取
り除きます).chop!
は文字列そのものを変更します.
chop!
は取り除く文字が無かった時には
nil
を返します.
chomp([rs])
chomp!([rs])
文字列の末尾からrsで指定する行区切りを取り除きま
す.rsのデフォルト値は変数$/
の値です.
chomp!
は文字列そのものを変更します.
chomp!
は取り除く改行が無かった時には
nil
を返します.
clone
dup
文字列と同じ内容を持つ新しい文字列を返します.フリーズした文
字列のclone
はフリーズされた文字列を返しますが,
dup
は内容の等しいフリーズされていない文字列を返
します.
crypt(salt)
crypt(3)を使って文字列を暗号化します. saltは2バイト以上の任意の文字列を指定します.
delete(str)
delete!(str)
文字列からstrに含まれる文字を取り除きます.
strの形式はtr(1)と同じです.つまり,
`a-c
'は`a'から`c'を意
味し,文字列の先頭が`^'の場合は文字列に含まれない文字
を削除します.
delete!
は取り除く文字が無かった時には
nil
を返します.
downcase
downcase!
文字列中の大文字を小文字に置き換えます.
tr("A-Z","a-z")
よりもちょっと速そうです.
downcase!
は置き換えが発生しなかった時には
nil
を返します.
dump
文字列中の非表示文字をバックスラッシュ記法に置き換えた文字列を返し
ます.str == eval(str.dump)
が保証されます.
each_byte {|char|...}
文字列中の各文字に対して繰り返します.
each([rs]) {|line|...}
each_line([rs]) {|line|...}
文字列中の各行に対して繰り返します.行の区切りは
rsで指定します.rsのデフォルト値は変数
$/
の値です.
empty?
文字列が空(つまり長さ0)の時,真を返します.
freeze
文字列の更新を禁止します.フリーズされた文字列の変更は例外を 発生させます.
frozen
文字列がフリーズされている時真を返します.
gsub(pattern, replace)
gsub!(pattern, replace)
文字列中でpatternにマッチする部分を全てreplaceに
置き換えます.置換文字列replace中の`\&'と
`\0'はマッチした部分文字列に,`\1...\9'はn番
目の括弧の内容に置き換えられます.置換文字列内では\`,
\',\+も使えます.これらは $`
,
$'
,$+
に対応します.
注意: replaceの中で
$<digits>
は使えません.この文字列が評価される時点で
はまだマッチが行われていないからです.
gsub!
は元の文字列を書き換えます.置換が行なわれなかった場
合はnil
を返します.一方,gsub
は文字列のコピー
を変更します.マッチが成功しなかった場合には元の文字列を返します.
gsub(pattern) {...}
gsub!(pattern) {...}
gsub
とgsub!
はブロックを指定して呼び出された
時には,全てのマッチした部分をブロックを評価した値で置き換えます.ブロッ
クの中では変数$<digits>
を参照できます.マッチした部
分文字列がブロックの引数として渡されます.
hex
文字列を16進文字列であると解釈して,整数に変換します.
index(substr[, pos])
文字列中のsubstrのインデックスを返します.もし見付からなけ
ればnil
を返します.posが与えられた時にはその
位置から検索を開始します.substrは文字列,文字コードを示す
整数,正規表現のいずれかを指定します.
intern
文字列に対応するシンボル値(Fixnum)を返します.文字列はナルキャラクタ ('\0')を含むことができません.
length
size
文字列の長さを返します.
ljust(width)
rjust(width)
center(width)
それぞれ左詰め,右詰め,中央寄せした文字列を返します.文字列の長さが widthより長い時には元の文字列をそのまま返します.
oct
文字列を8進文字列であると解釈して,整数に変換します.文字列が8進
(/^[0-7]+/
)でない時には0を返します.
reverse
reverse!
文字列をひっくり返します.
replace(other)
文字列の内容をotherの内容で置き換えます.
rindex(substr[, pos])
文字列中の最後のsubstrの位置を返します.もし見付からなけれ
ばnil
を返します.posが与えられた時にはその位置
から検索を開始します.substrは文字列,文字コードを示す
整数,正規表現のいずれかを指定します.
scan(re)
scan(re) {...}
reで与えられる正規表現を文字列に対して繰り返しマッ チを行い,正規表現中の括弧で括られた部分にマッチした文字列を 配列として返します.正規表現が括弧を含まない場合はマッチした 部分文字列の配列を返します.ブロックを指定して呼び出された時に は,括弧で括られた部分にマッチする部分文字列(括弧を含まない 場合はマッチ全体)をブロックのパラメータとします.
split([sep[, limit]])
文字列をsepで指定されたパターンによって分割して配列に格納し
ます.sepが省略された時のデフォルトはシステム変数
$;
の値が用いられます.$;
の値が
nil
の時には先頭の空白を除いて空白で分割を行います.
limitが省略された時には配列末尾の空文字列は取り除かれます. limitが指定されて,その値が負でない時には最大 limit個のフィールドに分割します. limitの値が負の時には無限に大きいlimit が指定されたかのように分割します.
sepで指定されたパターンが空文字列とマッチする場合は文字列が 1文字ずつに分割されます.例えば:
print 'hi there'.split(/ */).join(':'); => h:i:t:h:e:r:e
squeeze([str])
squeeze!([str])
strに含まれる同一の文字の並びをひとつにまとめます.
squeeze!
は文字列を変更しなかった時には
nil
を返します.
strip
strip!
先頭と末尾の空白(whitespace)を取り除きます.
strip!
は文字列を変更しなかった時には
nil
を返します.
sub(pattern, replace)
sub!(pattern, replace)
文字列中でpatternに最初にマッチする部分をreplace
に置き換えます.置換文字列replace中の`\&'
と`\0'はマッチした部分文字列に,`\1...\9'はn
番目の括弧の内容に置き換えられます.置換文字列内では\`,
\',\+も使えます.これらは $`
,
$'
,$+
に対応します.
注意: replaceの中で
$<digits>
は使えません.この文字列が評価される時点で
はまだマッチが行われていないからです.
sub!
は元の文字列を書き換えます.置換が行なわれなかった場
合はnil
を返します.一方,sub
は文字列のコピー
を変更します.マッチが成功しなかった場合には元の文字列を返します.
sub(pattern) {...}
sub!(pattern) {...}
sub
とsub!
はブロックを指定して呼び出された時
には,最初にマッチした部分をブロックを評価した値で置き換えます.ブロッ
クの中では変数$<digits>
を参照できます.マッチした部
分文字列がブロックの引数として渡されます.
succ
succ!
以下のような次の文字列を返します.
"aa".succ => "ab" "99".succ => "100" "a9".succ => "b0" "Az".succ => "Ba" "zz".succ => "aaa"
succ!
は文字列の内容を破壊的に修正します.
sum([bits])
文字列のbitsビットのチェックサムを計算します.
bitsの省略値は16です.例えば,以下のコードでSystem Vの
sum
プログラムと同じ値を得られます.
while gets sum += $_.sum end sum %= 65536
swapcase
swapcase!
全ての大文字を小文字に,小文字を大文字に変更します.
swapcase!
は置き換えが発生しなかった時には
nil
を返します.
to_f
文字列をFloat
に変換します.
to_i
文字列を10進で解釈して整数に変換します.
tr(search, replace)
tr!(search, replace)
文字列の中にsearch文字列に含まれる文字が存在すれば,
replace文字列の対応する文字で置き換えます.
search文字列の最初の文字が^
である場合,
続く文字列に含まれない文字列が置換の対象になります.
tr!
は文字列を変更しなかった時には
nil
を返します.
tr_s(search, replace)
tr_s!(search, replace)
文字列の中にsearch文字列に含まれる文字が存在すれば,
replace文字列の対応する文字で置き換えます.
置換した部分に同一の文字の並びを1文字に圧縮します.
tr同様,
search文字列の最初の文字が^
である場合,
続く文字列に含まれない文字列が置換の対象になります.
tr_s!
は文字列を変更しなかった時には
nil
を返します.
unpack(template)
パックされた(おそらくは
Array#pack
によっ
て生成された)文字列をtemplate文字列にしたがってア
ンパックし,それらの要素を含む配列を返します.
template文字列はArray#pack
とほぼ同様
で,以下の通りです.
a
- ASCII文字列(後続するnull文字やスペースを残す)
A
- ASCII文字列(後続するnull文字やスペースを削除)
b
- ビットストリング(下位ビットから上位ビット)
B
- ビットストリング(上位ビットから下位ビット)
h
- 16進文字列(下位ニブルが先)
H
- 16進文字列(上位ニブルが先)
c
- char
C
- unsigned char
s
- short
S
- unsigned short
i
- int
I
- unsigned int
l
- long
L
- unsigned long
m
- base64された文字列
n
- ネットワークバイトオーダーのshort
N
- ネットワークバイトオーダーのlong
v
- リトルエンディアン(Intel(またはVax)フォーマット)のshort
V
- リトルエンディアン(Intel(またはVax)フォーマット)のlong
f
- 単精度浮動小数点数(機種依存)
d
- 倍精度浮動小数点数(機種依存)
p
- ナル終端の文字列へのポインタ
P
- 構造体(固定長文字列)へのポインタ
u
- uuencodされた文字列
x
- 1バイト読み飛ばす
X
- 1バイト後退
@
- 絶対位置への移動
upcase
upcase!
小文字を全て大文字にする.tr("a-z", "A-Z")
よりもちょっと
速そうです.
upcase!
は置き換えが発生しなかった時には
nil
を返します.
upto(max) {...}
self
から始まって,maxまで次の
文字列を順に繰り返します.次の定義については
succ
を参照してください.
このメソッドは
Range#each
の内部で用いられているので,以下のようなコードは:
`a, b, c,...z,aa,...az, ba'を出力します.for i in "a" .. "ba" print i, "\n" end