# split method

Iterable<String> split (String lines, [ int start = 0, int end ])

Split `lines` into individual lines.

If `start` and `end` are provided, only split the contents of `lines.substring(start, end)`. The `start` and `end` values must specify a valid sub-range of `lines` (`0 <= start <= end <= lines.length`).

## Implementation

    static Iterable<String> split(String lines, [int start = 0, int end]) sync* {
      end = RangeError.checkValidRange(start, end, lines.length);
      var sliceStart = start;
      var char = 0;
      for (var i = start; i < end; i++) {
        var previousChar = char;
        char = lines.codeUnitAt(i);
        if (char != _CR) {
          if (char != _LF) continue;
          if (previousChar == _CR) {
            sliceStart = i + 1;
            continue;
          }
        }
        yield lines.substring(sliceStart, i);
        sliceStart = i + 1;
      }
      if (sliceStart < end) {
        yield lines.substring(sliceStart, end);
      }
    }