capitalizeAllWordsFirstLetter property

String get capitalizeAllWordsFirstLetter

Capitalize only the first letter of each word in a string

Implementation

String get capitalizeAllWordsFirstLetter {
  String lowerCasedString = toLowerCase();
  String stringWithoutExtraSpaces = lowerCasedString.trim();

  if (stringWithoutExtraSpaces.isEmpty) {
    return "";
  }
  if (stringWithoutExtraSpaces.length == 1) {
    return stringWithoutExtraSpaces.toUpperCase();
  }

  List<String> stringWordsList = stringWithoutExtraSpaces.split(" ");
  List<String> capitalizedWordsFirstLetter = stringWordsList.map((String word) {
    if (word.trim().isEmpty) {
      return "";
    }
    return word.trim();
  }).where((String word) => word != "").map((String word) {
    if (word.startsWith(RegExp(r'[\n\t\r]'))) {
      return word;
    }
    return word[0].toUpperCase() + word.substring(1).toLowerCase();
  }).toList();

  String finalResult = capitalizedWordsFirstLetter.join(" ");
  return finalResult;
}