mirror of
https://github.com/ruby/ruby.git
synced 2025-08-28 15:36:16 +02:00
string.c: split with block
* string.c (rb_str_split_m): yield each split substrings if the block is given, instead of returing the array. [Feature #4780] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d13a2d498c
commit
2258a97fe2
3 changed files with 95 additions and 31 deletions
|
@ -1699,7 +1699,46 @@ CODE
|
|||
assert_equal([S("a"), S(""), S("b"), S("c"), S("")], S("a||b|c|").split(S('|'), -1))
|
||||
|
||||
assert_equal([], "".split(//, 1))
|
||||
ensure
|
||||
$; = fs
|
||||
end
|
||||
|
||||
def test_split_with_block
|
||||
fs, $; = $;, nil
|
||||
result = []; S(" a b\t c ").split {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c")], result)
|
||||
result = []; S(" a b\t c ").split(S(" ")) {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c")], result)
|
||||
|
||||
result = []; S(" a | b | c ").split(S("|")) {|s| result << s}
|
||||
assert_equal([S(" a "), S(" b "), S(" c ")], result)
|
||||
|
||||
result = []; S("aXXbXXcXX").split(/X./) {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c")], result)
|
||||
|
||||
result = []; S("abc").split(//) {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c")], result)
|
||||
|
||||
result = []; S("a|b|c").split(S('|'), 1) {|s| result << s}
|
||||
assert_equal([S("a|b|c")], result)
|
||||
|
||||
result = []; S("a|b|c").split(S('|'), 2) {|s| result << s}
|
||||
assert_equal([S("a"), S("b|c")], result)
|
||||
result = []; S("a|b|c").split(S('|'), 3) {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c")], result)
|
||||
|
||||
result = []; S("a|b|c|").split(S('|'), -1) {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c"), S("")], result)
|
||||
result = []; S("a|b|c||").split(S('|'), -1) {|s| result << s}
|
||||
assert_equal([S("a"), S("b"), S("c"), S(""), S("")], result)
|
||||
|
||||
result = []; S("a||b|c|").split(S('|')) {|s| result << s}
|
||||
assert_equal([S("a"), S(""), S("b"), S("c")], result)
|
||||
result = []; S("a||b|c|").split(S('|'), -1) {|s| result << s}
|
||||
assert_equal([S("a"), S(""), S("b"), S("c"), S("")], result)
|
||||
|
||||
result = []; "".split(//, 1) {|s| result << s}
|
||||
assert_equal([], result)
|
||||
ensure
|
||||
$; = fs
|
||||
end
|
||||
|
@ -1762,6 +1801,7 @@ CODE
|
|||
s.split("b", 1).map(&:upcase!)
|
||||
assert_equal("abc", s)
|
||||
end
|
||||
|
||||
def test_squeeze
|
||||
assert_equal(S("abc"), S("aaabbbbccc").squeeze)
|
||||
assert_equal(S("aa bb cc"), S("aa bb cc").squeeze(S(" ")))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue