capitalizeFirstLetterOfEverySentence method

String capitalizeFirstLetterOfEverySentence()

Capitalizes the first letter of every sentence Sentences are determined by periods (.), exclamation marks (!), and question marks (?)

Implementation

String capitalizeFirstLetterOfEverySentence() {
  if (isEmpty) return this;

  StringBuffer result = StringBuffer();
  bool capitalizeNext = true;

  bool isAsciiLetter(String ch) {
    if (ch.length != 1) return false;
    final int code = ch.codeUnitAt(0);
    return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
  }

  for (int i = 0; i < length; i++) {
    String char = this[i];

    if (char == '.' || char == '!' || char == '?') {
      result.write(char);
      capitalizeNext = true;
    } else if (capitalizeNext && isAsciiLetter(char)) {
      result.write(char.toUpperCase());
      capitalizeNext = false;
    } else {
      result.write(char);
      if (char.trim().isNotEmpty && !isAsciiLetter(char)) {
        // keep capitalizeNext unchanged for whitespace; nothing needed
      }
    }
  }

  return result.toString();
}