slice method

String slice(
  1. int? start, [
  2. int? end
])

Implementation

String slice(int? start, [int? end]) {
  start ??= 0;

  if (start < 0) {
    start += length;
    if (start < 0) {
      start = 0;
    }
  }
  if (start >= length) {
    return '';
  }

  end ??= length;

  if (end < 0) {
    end += length;
    if (end < 0) {
      end = 0;
    }
  }
  if (end > length) {
    end = length;
  }
  if (start > end) {
    return '';
  }

  var out = '';
  while (end != null && start <= --end) {
    out = this[end] + out;
  }

  return out;
}