статический метод parse
- String uri
Разбирает строку как URI data.
Строка должна иметь формат:
'data:' (type '/' subtype)? (';' attribute '=' value)* (';base64')? ',' data где type, subtype, attribute и value определены в RFC-2045, а data представляет собой последовательность символов URI (RFC-2396 uric).
Это означает, что все символы должны быть ASCII, но URI может содержать процентные escape-последовательности для не-ASCII значений байтов, которые необходимо интерпретировать, чтобы преобразовать в соответствующую строку.
При разборе проверяется корректность данных, закодированных в Base64, и они нормализуются: используется алфавит Base64 по умолчанию и добавляются символы заполнения. Данные, не закодированные в Base64, экранируются с помощью процентных escape-последовательностей, если это необходимо для обеспечения их корректности; регистр символов в имеющихся escape-последовательностях нормализуется.
При обращении к отдельным частям впоследствии может возникнуть ошибка, если выяснится, что их содержимое не удаётся успешно декодировать как строку, например если имеющиеся процентные escape-последовательности представляют байты, которые не удаётся декодировать с помощью выбранной Encoding (см. contentAsString).
Если uri не является допустимым URI данных, возникает FormatException.
Реализация
static UriData parse(String uri) {
if (uri.length >= 5) {
int dataDelta = _startsWithData(uri, 0);
if (dataDelta == 0) {
// Exact match on "data:".
return _parse(uri, 5, null);
}
if (dataDelta == 0x20) {
// Starts with a non-normalized "data" scheme containing upper-case
// letters. Parse anyway, but throw away the scheme.
return _parse(uri.substring(5), 0, null);
}
}
throw FormatException("Does not start with 'data:'", uri, 0);
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/UriData/parse.html