Строки разбораC#

Место общения программистов C#
Anonymous
Строки разбора

Сообщение Anonymous »

У меня есть функция Azure Function .NET 6.0 HTTP.

Код: Выделить всё

?param=foo&param=escape%2Ctest
[*]

Код: Выделить всё

?param=foo,escape%2Ctest
В обоих случаях я хотел бы извлечь массив

Код: Выделить всё

["foo", "escape,test"]
[/b].
Я был удивлен, обнаружив, что параметры обработки строки запроса, доступные мне либо не поддерживали синтаксис запятой, либо URL декодировал строку запроса как часть группировки параметров.

Код: Выделить всё

[i]System.Web.[/i]HttpUtility.ParseQueryString[/b]
[*]

Код: Выделить всё

[i]Microsoft.AspNetCore.WebUtilities.[/i]QueryHelpers.ParseQuery[/b]
[*]

Код: Выделить всё

[i]Microsoft.AspNetCore.Http.[/i]HttpRequest.Query[/b]
Вот демо в скрипке .NET:

Код: Выделить всё

var qs = "?param=foo,escape%2Ctest";

var a = httpRequest.Query["param"];
// ["foo,escape,test"]

var b = HttpUtility.ParseQueryString(qs)["param"];
// "foo,escape,test"

var c = QueryHelpers.ParseQuery(qs)["param"];
// ["foo,escape,test"]
< /code>
Я немного удивлен, что нет поддержки отдельного формата запятой. И я очень удивлен, что, похоже, нет способа получить сегментированную строку запроса без декодирования параметров строки запроса (что предотвращает различие между Param = foo, Escape%2ctest 
и? Param = foo, Escape, Test ).
Я буду публиковать свое текущее решение в качестве «Ответ», но я буду не буду я буду не буду я стараться. Я не буду использовать. Если кто -то сможет указать на то, что я здесь пропустил, я буду признателен.

Подробнее здесь: https://stackoverflow.com/questions/712 ... mma-syntax

Вернуться в «C#»