extension TakeWhile on String { String takeWhile(Function charValidator) { StringBuffer output = StringBuffer(); for (final char in codeUnits) { if (charValidator(char)) { output.writeCharCode(char); } else { break; } } return output.toString(); } }