splitCapitalized method

List<String> splitCapitalized({
  1. bool splitNumbers = false,
})

Splits a CamelCase or PascalCase string into a list of words based on capitalization.

This method uses regular expressions to split the string at the boundaries between lowercase and uppercase letters, effectively separating CamelCase or PascalCase words. If splitNumbers is true, it also splits before numbers that follow lowercase letters.

Parameters:

  • splitNumbers: A boolean value. If true, also splits words before numbers. Defaults to false.

Returns: A List<String> of words split from the CamelCase or PascalCase string.

Example:

'SplitCapitalizedWords'.splitCapitalized(); // Returns ['Split', 'Capitalized', 'Words']
'Numbers123Split'.splitCapitalized(splitNumbers: true); // Returns ['Numbers', '123', 'Split']
''.splitCapitalized(); // Returns []

Implementation

List<String> splitCapitalized({bool splitNumbers = false}) {
  // Return empty list for empty input string
  if (isEmpty) {
    return <String>[];
  }

  // ref: https://stackoverflow.com/questions/53718516/separate-a-pascalcase-string-into-separate-words-using-dart
  final RegExp pattern = splitNumbers
      // RegExp to split numbers
      ? RegExp('(?<=[a-z])(?=[A-Z0-9])')
      : RegExp('(?<=[a-z])(?=[A-Z])');

  return split(pattern);
}