separated method
Implementation
String separated(String separator) {
final _this = this;
String out = '';
if (_this != null && _this.isNotEmpty) {
final c = (separator.length == 1) ? '\\${separator[0]}' : '';
String s = _this.trim().replaceAll(RegExp('[\\s$c]+'), separator);
for (int i = 0; i < s.length; i++) {
if (s[i].isUpperCase) {
if (i != 0 && s[i - 1].isLetterOrDigit) {
if (s[i - 1].isUpperCase) {
if (i < s.length - 1 &&
s[i + 1].isLetter &&
!s[i + 1].isUpperCase) {
out += separator;
}
} else {
out += separator;
}
}
out += s[i].toLowerCase();
} else {
out += s[i];
}
}
}
return out;
}