std.uri
Кодирование и декодирование универсальных идентификаторов ресурсов (URI). URI используются в интернет-протоколах передачи данных. Допустимые символы URI включают буквы, цифры и символы ;/?:@&=+$,-.!~*'() Зарезервированные символы URI — ;/?:@&=+$, Последовательности экранирования состоят из %, за которым следуют две шестнадцатеричные цифры.
- См. также:
-
RFC 3986
Википедия
- Лицензия:
- Лицензия Boost 1.0.
- Авторы:
- Walter Bright
- Исходный код
- std/uri.d
- класс URIException: object.Exception;
-
Данное исключение выбрасывается, если при кодировании или декодировании URI произошла ошибка.
- Примеры:
-
import std.exception : assertThrown; assertThrown!URIException("%ab".decode);
- строка decode(Char)(scope const(Char)[] encodedURI)
Ограничения: если (isSomeChar!Char); -
Декодирует строку URI encodedURI в строку UTF-8 и возвращает её. Последовательности экранирования, которые разрешаются в зарезервированные символы URI, не заменяются. Последовательности экранирования, которые разрешаются в символ '#', не заменяются.
- Примеры:
-
writeln("foo%20bar".decode); // "foo bar" writeln("%3C%3E.@.%E2%84%A2".decode); // "<>.@.™" writeln("foo&/".decode); // "foo&/" writeln("!@#$&*(".decode); // "!@#$&*("
- строка decodeComponent(Char)(scope const(Char)[] encodedURIComponent)
Ограничения: если (isSomeChar!Char); -
Декодирует строку URI encodedURI в строку UTF-8 и возвращает её. Все последовательности экранирования декодируются.
- Примеры:
-
writeln("foo%2F%26".decodeComponent); // "foo/&" writeln("dl%C3%A4ng%20r%C3%B6cks".decodeComponent); // "dläng röcks" writeln("!%40%23%24%25%5E%26*(".decodeComponent); // "!@#$%^&*("
- строка encode(Char)(scope const(Char)[] uri)
Ограничения: если (isSomeChar!Char); -
Кодирует строку UTF-8 uri в URI и возвращает этот URI. Любой символ, не являющийся допустимым символом URI, экранируется. Символ '#' не экранируется.
- Примеры:
-
writeln("foo bar".encode); // "foo%20bar" writeln("<>.@.™".encode); // "%3C%3E.@.%E2%84%A2" writeln("foo/#?a=1&b=2".encode); // "foo/#?a=1&b=2" writeln("dlang+rocks!".encode); // "dlang+rocks!" writeln("!@#$%^&*(".encode); // "!@#$%25%5E&*("
- строка encodeComponent(Char)(scope const(Char)[] uriComponent)
Ограничения: если (isSomeChar!Char); -
Кодирует строку UTF-8 uriComponent в URI и возвращает этот URI. Любой символ, не являющийся буквой, цифрой или одним из символов -.!~*'(), экранируется.
- Примеры:
-
writeln("!@#$%^&*(".encodeComponent); // "!%40%23%24%25%5E%26*(" writeln("<>.@.™".encodeComponent); // "%3C%3E.%40.%E2%84%A2" writeln("foo/&".encodeComponent); // "foo%2F%26" writeln("dläng röcks".encodeComponent); // "dl%C3%A4ng%20r%C3%B6cks" writeln("dlang+rocks!".encodeComponent); // "dlang%2Brocks!"
- ptrdiff_t uriLength(Char)(scope const(Char)[] s)
Ограничения: если (isSomeChar!Char); -
Начинается ли строка s[] с URL?
- Возвращает:
- -1, если нет; len, если да, и s[0 .. len] — это фрагмент s[], который является этим URL
- Примеры:
-
string s1 = "http://www.digitalmars.com/~fred/fredsRX.html#foo end!"; writeln(uriLength(s1)); // 49 string s2 = "no uri here"; writeln(uriLength(s2)); // -1 assert(uriLength("issue 14924") < 0);
- ptrdiff_t emailLength(Char)(scope const(Char)[] s)
Ограничения: если (isSomeChar!Char); -
Начинается ли строка s[] с адреса электронной почты?
- Возвращает:
- -1, если нет; len, если да, и s[0 .. i] — это фрагмент s[], который является этим адресом электронной почты
- Ссылки
- RFC2822
- Примеры:
-
string s1 = "my.e-mail@www.example-domain.com with garbage added"; writeln(emailLength(s1)); // 32 string s2 = "no email address here"; writeln(emailLength(s2)); // -1 assert(emailLength("issue 14924") < 0);
© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_uri.html