capitalizeWords method

String capitalizeWords({
  1. bool lowerCaseRemaining = false,
})

Capitalizes the first letter of each word in the string, leaving other characters as they are.

Words are delimited by spaces. If lowerCaseRemaining is set to true, all characters except the first letter of each word are converted to lowercase.

Parameters:

  • lowerCaseRemaining: A boolean value. If true, converts the remaining characters of each word to lowercase. Defaults to false.

Returns: A new string with the first letter of each word capitalized. Returns the original string if it is empty.

Example:

'hello world'.capitalizeWords(); // Returns 'Hello World'
'mixed CASE words'.capitalizeWords(lowerCaseRemaining: true); // Returns 'Mixed Case Words'
''.capitalizeWords(); // Returns ''

Implementation

String capitalizeWords({bool lowerCaseRemaining = false}) {
  if (isEmpty) {
    // failed null or empty check
    return this;
  }

  final List<String> originalWords = split(' '); // Keep original words with spaces

  // The original code was using words() which effectively removed extra spaces.
  final List<String> capitalizedWords = originalWords.map((String word) {
    if (word.isNotEmpty) {
      return word.capitalize(lowerCaseRemaining: lowerCaseRemaining);
    }
    return word; // Keep empty strings (for multiple spaces)
  }).toList();

  return capitalizedWords.join(' ');
}