c# - преобразовать список <string>в строку - но сохранить структуру - PullRequest
2 голосов
/ 31 марта 2020

Я пытаюсь преобразовать список в строку. но я получаю ошибку, и я пытаюсь сделать это, но это долго, и я хочу вашу помощь

, что я пытаюсь сделать:

List<string> list = new List<string> {"a","a","a" };

я хочу получить строку, как это:

моя строка будет равна:

"["a","a","a"]" 

как я могу сделать это в одной строке?

спасибо !!!!!!

Ответы [ 2 ]

3 голосов
/ 16 апреля 2020

как я могу сделать это в одну строку?

Считаете ли вы, что вы будете жить дольше, если наберете меньше строк?

Путь к " сделать это в одну строку "означает разбить проблему на множество подзадач, каждая из которых короткая. Например, мы могли бы решить вашу проблему, извлекая следующие подзадачи:

Цитировать строку:

static class Extensions
{
  public static string Quote(this string s) => 
    "\"" + s + "\"";

Цитировать последовательность строк:

  public static IEnumerable<string> QuoteAll(
    this IEnumerable<string> items) =>
    items.Select(Quote);

Запятая -отделите последовательность:

  public static string CommaJoin<T>(this IEnumerable<T> items) =>
    string.Join(",", items);

Заключите строку в скобку:

  public static string Bracket(this string s) =>
    "[" + s + "]";
}

А теперь соберите все вместе:

string result = list.QuoteAll().CommaJoin().Bracket();

И все готово "в одном линия". Но важно не то, чтобы каждый метод был одной строкой. Важно то, что, во-первых, смысл кода можно легко понять, просто прочитав его , а во-вторых, теперь у вас есть четыре инструмента, которые вы можете использовать для других заданий в вашей программе . Вероятно, это не единственный список через запятую, который вы собираетесь создать.

3 голосов
/ 31 марта 2020

Вы можете легко сделать это, сериализовав свой список в строку JSON. Использование Newtonsoft.Json библиотеки

List<string> list = new List<string> { "a", "a", "a" };
var result = JsonConvert.SerializeObject(list);

Использование System.Text.Json API (встроенный. NET Core 3.x, доступен для. NET Core 2.x и . NET Framework 4.7.2 и 4.8)

List<string> list = new List<string> { "a", "a", "a" };
var result = System.Text.Json.JsonSerializer.Serialize(list);

Использование. NET Встроенный в Framework JavaScriptSerializer класс (но рекомендуется не первый вариант предпочтительнее)

List<string> list = new List<string> { "a", "a", "a" };
var result = new JavaScriptSerializer().Serialize(list);

Все методы вернут ["a","a","a"], и они более понятны и удобны, чем ручная замена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...