allIndicesOf method

List<int> allIndicesOf(
  1. String substring
)

Returns all start indices where substring occurs (non-overlapping).

Implementation

List<int> allIndicesOf(String substring) {
  if (substring.isEmpty) return <int>[];
  final int maxOccurrences = length ~/ (substring.length > 0 ? substring.length : 1) + 1;
  final List<int> out = List<int>.filled(maxOccurrences, 0);
  int i = 0;
  int idx = 0;
  while (true) {
    i = indexOf(substring, i);
    if (i == -1) break;
    out[idx++] = i;
    i += substring.length;
  }
  return out.sublist(0, idx);
}