Project

General

Profile

Actions

Bug #13621

closed

String#split returns an array longer than given limit, when passing a regexp with groups

Added by cichol (Renxiang Cai) almost 7 years ago. Updated over 6 years ago.

Status:
Closed
Target version:
-
[ruby-core:81505]

Description

The String#split documentation(http://ruby-doc.org/core-2.4.1/String.html#method-i-split) described:

If pattern is a Regexp, str is divided where the pattern matches. Whenever the pattern matches a zero-length string, str is split into individual characters. If pattern contains groups, the respective matches will be returned in the array as well.

If limit is a positive number, at most that number of fields will be returned (if limit is 1, the entire string is returned as the only entry in an array).

However giving a regexp with groups, split can return fields more than a given limit:

'aBa'.split(/(B)()()/, 2) # => ["a", "B", "", "", "a"]

Shouldn't it be ["a", "B"] ?

Updated by nobu (Nobuyoshi Nakada) almost 7 years ago

  • Status changed from Open to Assigned
  • Assignee set to stomar (Marcus Stollsteimer)

A documentation issue.
the limit limits only split fields, not separators.

Actions #2

Updated by stomar (Marcus Stollsteimer) almost 7 years ago

  • Status changed from Assigned to Closed

Applied in changeset trunk|r59002.


string.c: docs for String#split

  • string.c: [DOC] clarify docs for String#split when called
    with limit and capture groups.
    Reported by Cichol Tsai. [ruby-core:81505] [Bug #13621]
Actions #3

Updated by stomar (Marcus Stollsteimer) almost 7 years ago

  • Backport changed from 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN to 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED
Actions #4

Updated by stomar (Marcus Stollsteimer) almost 7 years ago

  • Backport changed from 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED to 2.2: WONTFIX, 2.3: REQUIRED, 2.4: REQUIRED

Updated by usa (Usaku NAKAMURA) almost 7 years ago

  • Backport changed from 2.2: WONTFIX, 2.3: REQUIRED, 2.4: REQUIRED to 2.2: WONTFIX, 2.3: DONE, 2.4: REQUIRED

ruby_2_3 r59227 merged revision(s) 59002.

Updated by nagachika (Tomoyuki Chikanaga) over 6 years ago

  • Backport changed from 2.2: WONTFIX, 2.3: DONE, 2.4: REQUIRED to 2.2: WONTFIX, 2.3: DONE, 2.4: DONE

ruby_2_4 r59403 merged revision(s) 59002.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0