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