splitCapitalized method
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. Iftrue
, also splits words before numbers. Defaults tofalse
.
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);
}