'In dart, split string into two parts using length of first string

I have a string hiWorld and i want to split this string in two parts hi and World by length of first word hi which is of length 2.

This is what i want to do


List<String> list = ("hiWorld").splitFromLength(2);



Solution 1:[1]

My current solution

    List<String> splitStringByLength( String str, int length)
    {
        List<String> data = [];

        data.add( str.substring(0, length) );
        data.add( str.substring( length) );
        return data;
    }

Solution 2:[2]

This is my solution which is more generic:

List<String> splitByLength(String value, int length) {
  List<String> pieces = [];

  for (int i = 0; i < value.length; i += length) {
    int offset = i + length;
    pieces.add(value.substring(i, offset >= value.length ? value.length : offset));
  }
  return pieces;
}

And the extension method:

extension on String {
  List<String> splitByLength(int length, {bool ignoreEmpty = false}) {
    List<String> pieces = [];

    for (int i = 0; i < this.length; i += length) {
      int offset = i + length;
      String piece = this.substring(i, offset >= this.length ? this.length : offset);
      
      if (ignoreEmpty) {
        piece = piece.replaceAll(RegExp(r'\s+'), '');
      }

      pieces.add(piece);
    }
    return pieces;
  }
}

You can use it like:

'HELLO WORLD'.splitByLength(5, ignoreEmpty: true)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Manish Dhruw
Solution 2