別のキーワード
ライブラリ
- ビルトイン (204)
クラス
- String (156)
モジュール
- Enumerable (48)
キーワード
- [] (72)
-
chunk
_ while (12) - slice! (12)
-
slice
_ before (24) -
slice
_ when (12)
検索結果
先頭5件
-
String
# slice(range) -> String (15387.0) -
rangeで指定したインデックスの範囲に含まれる部分文字列を返します。
...3 4 5 (インデックス)
-6 -5 -4 -3 -2 -1 (負のインデックス)
| a | b | c | d | e | f |
|<--------->| 'abcdef'[0..2] # => 'abc'
|<----->| 'abcdef'[4..5] # => 'ef'
|<--------->| 'abcdef'[2..4] # => 'cde'
range.la......st が文字列の長さ以上のときは
(文字列の長さ - 1) を指定したものとみなされます。
range.first が 0 より小さいか文字列の長さより大きいときは nil を
返します。ただし range.first および range.last のどちらか
または両方が負の......t[例][ruby]{
'abcd'[ 2 .. 1] # => ""
'abcd'[ 2 .. 2] # => "c"
'abcd'[ 2 .. 3] # => "cd"
'abcd'[ 2 .. 4] # => "cd"
'abcd'[ 2 .. -1] # => "cd" # str[f..-1] は「f 文字目から
'abcd'[ 3 .. -1] # => "d" # 文字列の最後まで」を表す慣用句
'abcd'[ 1 .. 2] # => "bc"
'abcd'[ 2... -
String
# slice(substr) -> String | nil (15362.0) -
self が substr を含む場合、一致した文字列を新しく作って返します。 substr を含まなければ nil を返します。
...substr を含む場合、一致した文字列を新しく作って返します。
substr を含まなければ nil を返します。
@param substr 取得したい文字列のパターン。文字列
//emlist[例][ruby]{
substr = "bar"
result = "foobar"[substr]
p result # => "bar"
p substr.... -
String
# slice(regexp , name) -> String (15302.0) -
正規表現 regexp の name で指定した名前付きキャプチャにマッチする最初の 部分文字列を返します。正規表現が self にマッチしなかった場合は nil を返 します。
...ない場合に発生します。
//emlist[例][ruby]{
s = "FooBar"
s[/(?<foo>[A-Z]..)(?<bar>[A-Z]..)/] # => "FooBar"
s[/(?<foo>[A-Z]..)(?<bar>[A-Z]..)/, "foo"] # => "Foo"
s[/(?<foo>[A-Z]..)(?<bar>[A-Z]..)/, "bar"] # => "Bar"
s[/(?<foo>[A-Z]..)(?<bar>[A-Z]..)/, "baz"] # => IndexError
//}... -
String
# slice(nth) -> String | nil (15262.0) -
nth 番目の文字を返します。 nth が負の場合は文字列の末尾から数えます。 つまり、 self.size + nth 番目の文字を返します。
...数
@return 指定した位置の文字を表す String オブジェクト
//emlist[例][ruby]{
p 'bar'[2] # => "r"
p 'bar'[2] == ?r # => true
p 'bar'[-1] # => "r"
p 'bar'[3] # => nil
p 'bar'[-4] # => nil
//}
このメソッドの仕様は 1.8.x 以前から大きく変更さ... -
String
# slice(nth , len) -> String | nil (15262.0) -
nth 文字目から長さ len 文字の部分文字列を新しく作って返します。 nth が負の場合は文字列の末尾から数えます。
...mlist[例][ruby]{
str0 = "bar"
str0[2, 1] #=> "r"
str0[2, 0] #=> ""
str0[2, 100] #=> "r" (右側を超えても平気)
str0[-1, 1] #=> "r"
str0[-1, 2] #=> "r" (右に向かって len 文字)
str0[3, 1] #=> ""
str0[4, 1] #=> nil
str0[-4, 1]......#=> nil
str1 = str0[0, 2] # (str0 の「一部」を str1 とする)
str1 #=> "ba"
str1[0] = "XYZ"
str1 #=> "XYZa" (str1 の内容が破壊的に変更された)
str0 #=> "bar" (str0 は無傷、 str1 は str0 と内容を共有していない)
//}... -
String
# slice(regexp , nth = 0) -> String (15262.0) -
正規表現 regexp の nth 番目の括弧にマッチする最初の部分文字列を返します。 nth を省略したときや 0 の場合は正規表現がマッチした部分文字列全体を返します。 正規表現が self にマッチしなかった場合や nth に対応する括弧がないときは nil を返します。
...m regexp 取得したい文字列のパターンを示す正規表現
@param nth 取得したい正規表現レジスタのインデックス。整数
//emlist[例][ruby]{
p "foobar"[/bar/] # => "bar"
p $~.begin(0) # => 3
p "def getcnt(line)"[ /def\s+(\w+)/, 1 ] # => "getcnt"
//}... -
Enumerable
# slice _ before {|elt| bool } -> Enumerator (12411.0) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...ンクは配列として表現されます。
Enumerable#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。
//emlist[例][ruby]{
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2].slice_before(&:even?).to_a
# => [[0], [2], [4, 1], [2], [4, 5,......,4,2].slice_before(&:odd?).to_a
# => [[0, 2, 4], [1, 2, 4], [5], [3], [1, 4, 2]]
# ChangeLog のエントリーを順に取る
open("ChangeLog") {|f|
f.slice_before(/\A\S/).each {|e| pp e}
}
# 上と同じだが、パターンでなくブロックを使う
open("ChangeLog") {|f|
f.slice_before......st -R" の結果を分割する
# これは一要素が複数行にまたがっている
IO.popen([{"LC_ALL"=>"C"}, "svn", "proplist", "-R"]) {|f|
f.lines.slice_before(/\AProp/).each {|lines| p lines }
}
#=> ["Properties on '.':\n", " svn:ignore\n", " svk:merge\n"]
# ["Properties on 'goruby.c... -
Enumerable
# slice _ before(pattern) -> Enumerator (12411.0) -
パターンがマッチした要素、もしくはブロックが真を返した要素から 次にマッチする手前までを チャンク化(グループ化)したものを繰り返す Enumerator を 返します。
...ンクは配列として表現されます。
Enumerable#to_a や Enumerable#map のようなメソッドを使うこ
ともできます。
//emlist[例][ruby]{
# 偶数要素をチャンクの先頭と見なす
[0,2,4,1,2,4,5,3,1,4,2].slice_before(&:even?).to_a
# => [[0], [2], [4, 1], [2], [4, 5,......,4,2].slice_before(&:odd?).to_a
# => [[0, 2, 4], [1, 2, 4], [5], [3], [1, 4, 2]]
# ChangeLog のエントリーを順に取る
open("ChangeLog") {|f|
f.slice_before(/\A\S/).each {|e| pp e}
}
# 上と同じだが、パターンでなくブロックを使う
open("ChangeLog") {|f|
f.slice_before......st -R" の結果を分割する
# これは一要素が複数行にまたがっている
IO.popen([{"LC_ALL"=>"C"}, "svn", "proplist", "-R"]) {|f|
f.lines.slice_before(/\AProp/).each {|lines| p lines }
}
#=> ["Properties on '.':\n", " svn:ignore\n", " svk:merge\n"]
# ["Properties on 'goruby.c... -
Enumerable
# slice _ when {|elt _ before , elt _ after| bool } -> Enumerator (9410.0) -
要素を前から順にブロックで評価し、その結果によって要素をチャンクに分け た(グループ化した)要素を持つEnumerator を返します。
...merator を返します。
隣り合う値をブロックパラメータ elt_before、elt_after に渡し、ブロックの
評価値が真になる所でチャンクを区切ります。
ブロックは self の長さ - 1 回呼び出されます。
@return チャンクごとの配列をブロ......um.slice_when { |elt_before, elt_after| bool }.each { |ary| ... }
//}
to_a や map などのその他の Enumerable モジュールのメソッ
ドも有用です。
//emlist[例][ruby]{
# 1ずつ増加する部分配列ごとに分ける。
a = [1,2,4,9,10,11,12,15,16,19,20,21]
b =......a.slice_when {|i, j| i+1 != j }
p b.to_a # => [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]
c = b.map {|a| a.length < 3 ? a : "#{a.first}-#{a.last}" }
p c # => [[1, 2], [4], "9-12", [15, 16], "19-21"]
d = c.join(",")
p d # => "1,2,4,9-12,15,16,19-21"
# ソート済の配列を近い値(...