文字列クラス.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 == 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
self <=> other
self
とother
を辞書順で比較して,
self
が大きい時に正,等しい時に0,小さい時に負
の整数を返します.
<<(other)
concat(other)
otherの内容を追加します.
capitalize
capitalize!
先頭の文字がアルファベットであれば大文字に変更します.
chop
chop!
文字列の最後の文字を取り除きます(終端が"\r\n"であれば2文字取
り除きます).chop!
は文字列そのものを変更します.
crypt(salt)
crypt(3)を使って文字列を暗号化します. saltは2バイト以上の任意の文字列を指定します.
delete(str)
delete!(str)
文字列からstrに含まれる文字を取り除きます.
strの形式はtr(1)と同じです.つまり,
`a-c
'は`a'から`c'を意
味し,文字列の先頭の`^'は文字列に含まれない文字
を削除します.
dup
文字列と同じ内容を持つ新しい文字列を返します.フリーズした文
字列のclone
はフリーズされた文字列を返しますが,
dup
は内容の等しいフリーズされていない文字列を返
します.
downcase
downcase!
文字列中の大文字を小文字に置き換えます.tr("A-Z",
"a-z")
よりもちょっと速そうです.
each_byte {|char|...}
文字列中の各文字に対して繰り返します.
each([rs]) {|line|...}
each_line([rs]) {|line|...}
文字列中の各行に対して繰り返します.行の区切りは
rsで指定します.rsのデフォルト値は変数
$/
の値です.
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が与えられた時にはその位
置から検索を開始します.
intern
文字列に対応するシンボル値(Fixnum)を返します.文字列はナルキャラクタ ('\0')を含むことができません.
length
size
文字列の長さを返します.
ljust(width)
rjust(width)
center(width)
それぞろ右詰め,左詰め,中央寄せした文字列を返します.文字列の長さが widthより長い時には元の文字列をそのまま返します.
oct
文字列を8進文字列であると解釈して,整数に変換します.文字列が8進
(/^[0-7]+/
)でない時には0を返します.
reverse
reverse!
文字列をひっくり返します.
rindex(substr[, pos])
文字列中の最後のsubstrの位置を返します.もし見付からなけれ
ばnil
を返します.posが与えられた時にはその位置
で検索を終了します.
scan(re)
scan(re) {...}
reで与えられる正規表現を文字列に対してマッチを行 い,正規表現中の括弧で括られた部分にマッチした文字列を配列と して返します.イテレータとして呼び出された時には,文字列に対 して繰り返しマッチを行い,括弧で括られた部分にマッチする部分 文字列をイテレータブロックへの値とします.
split([sep[, limit]])
文字列をsepで指定されたパターンによって分割して配列に格納し
ます.sepが省略された時のデフォルトはシステム変数
$;
の値が用いられます.$;
の値が
nil
の時には先頭の空白を除いて空白で分割を行います.
limitが指定された時には最大limit個のフィールドに 分割します.
sepで指定されたパターンが空文字列とマッチする場合は文字列が 1文字ずつに分割されます.例えば:
print 'hi there'.split(/ */).join(':'); => h:i:t:h:e:r:e
squeeze([str])
squeeze!([str])
strに含まれる文字の並びをひとつにまとめます.
strip
strip!
先頭と末尾の空白(whitespace)を取り除きます.
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
以下のような次の文字列を返します.
"aa".succ => "ab" "99".succ => "100" "a9".succ => "b0" "Az".succ => "Ba" "zz".succ => "aaa"
sum([bits])
文字列のbitsビットのチェックサムを計算します.
bitsの省略値は16です.例えば,以下のコードでSystem Vの
sum
プログラムと同じ値を得られます.
while gets sum += $_.sum end sum %= 65536
swapcase
swapcase!
全ての大文字を小文字に,小文字を大文字に変更します.
to_f
文字列をFloat
に変換します.
to_i
文字列を10進で解釈して整数に変換します.
tr(search, replace)
tr!(search, replace)
文字列の中にsearch文字列に含まれる文字が存在すれば,
replace文字列の対応する文字で置き換えます.
search文字列の最初の文字が^
である場合,
続く文字列に*含まれない*文字列が置換の対象になります.
簡便のため,str.tr(src,repl).squeeze(repl)
に相当するメソッ
ドtr_s(src,repl)
,
tr_s!(src,repl)
,が提供されています.
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 int
n
- ネットワークバイトオーダーのshort
N
- ネットワークバイトオーダーのlong
v
- リトルエンディアン(Intel(またはVax)フォーマット)のshort
V
- リトルエンディアン(Intel(またはVax)フォーマット)のlong
f
- 単精度浮動小数点数(機種依存)
d
- 倍精度浮動小数点数(機種依存)
u
- uuencodされた文字列
x
- 1バイト読み飛ばす
X
- 1バイト後退
@
- 絶対位置への移動
upcase
upcase!
小文字を全て大文字にする.tr("a-z", "A-Z")
よりもちょっと
速そうです.
upto(max) {...}
self
から始まって,maxまで次の
文字列を順に繰り返します.次の定義については
succ
を参照してください.
このメソッドは
Range#each
の内部で用いられているので,以下のようなコードは:
`a, b, c,...z,aa,...az, ba'を出力します.for i in "a" .. "ba" print i, "\n" end