Spec-Zone.ru › D

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("!@#&dollar;&*(".decode); // "!@#&dollar;&*("
строка 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); // "!@#&dollar;%^&*("
строка 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("!@#&dollar;%^&*(".encode); // "!@#&dollar;%25%5E&*("
строка encodeComponent(Char)(scope const(Char)[] uriComponent)
Ограничения: если (isSomeChar!Char);

Кодирует строку UTF-8 uriComponent в URI и возвращает этот URI. Любой символ, не являющийся буквой, цифрой или одним из символов -.!~*'(), экранируется.

Примеры:
writeln("!@#&dollar;%^&*(".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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API