VOOZH about

URL: https://apidock.com/ruby/String/partition

⇱ String#partition - APIdock


method

partition

ruby latest stable - Class: String
partition(p1)
public

Searches sep or pattern (regexp) in the string and returns the part before it, the match, and the part after it. If it is not found, returns two empty strings and str.

"hello".partition("l") #=> ["he", "l", "lo"]
"hello".partition("x") #=> ["hello", "", ""]
"hello".partition(/.l/) #=> ["h", "el", "lo"]
static VALUE
rb_str_partition(VALUE str, VALUE sep)
{
 long pos;

 sep = get_pat_quoted(sep, 0);
 if (RB_TYPE_P(sep, T_REGEXP)) {
 pos = rb_reg_search(sep, str, 0, 0);
 if (pos < 0) {
 failed:
 return rb_ary_new3(3, rb_str_dup(str), str_new_empty(str), str_new_empty(str));
 }
 sep = rb_str_subpat(str, sep, INT2FIX(0));
 if (pos == 0 && RSTRING_LEN(sep) == 0) goto failed;
 }
 else {
 pos = rb_str_index(str, sep, 0);
 if (pos < 0) goto failed;
 }
 return rb_ary_new3(3, rb_str_subseq(str, 0, pos),
 sep,
 rb_str_subseq(str, pos+RSTRING_LEN(sep),
 RSTRING_LEN(str)-pos-RSTRING_LEN(sep)));
}

Related methods