Задать вопрос
@Loudin

Как создать строку из массива с разделителем?

У меня есть массив:

string[] sentence = new string[] { "Привет", "меня", "зовут", "*", "Мой", "возраст", "таков" };


Мне нужно, чтобы в итоге было 2 переменных:
var name = "Привет меня зовут"
var age = "Мой возраст таков"


Символ * служит как разделитель одной части, от другой.

Не всегда символ * находится на 4 месте в массиве. Он может быть в любом месте.

Нужно сделать подобное, но с массивом строк на C#.
Как это сделать?
  • Вопрос задан
  • 1523 просмотра
Подписаться 1 Средний 2 комментария
Ответ пользователя Василий Банников К ответам на вопрос (3)
1. Держи екстеншен, который я только что написал (протестировал его, чтобы вёл себя почти как string.Split)
Код, конечно, не идеален, но работает
public static class ArrayExtensions
{
    public static List<List<T>> Split<T>(this IEnumerable<T> array, T separator, IEqualityComparer<T>? equalityComparer = null)
    {
        equalityComparer ??= EqualityComparer<T>.Default;
        var parts = new List<List<T>>();
        var currentPart = new List<T>();
        foreach (var element in array)
        {
            var isSeparator = equalityComparer.Equals(element, separator);
            if (isSeparator)
            {
                parts.Add(currentPart);
                currentPart = new List<T>();
            }
            else
            {
                currentPart.Add(element);
            }
        }
        parts.Add(currentPart);
        return parts;
    }
}


2. Тогда с ним можно будет сделать так:
var array = new [] { "Привет", "меня", "зовут", "*", "Мой", "возраст", "таков" };
var parts = array.Split("*").Select(x => string.Join(' ', x)).ToArray();
var name = parts[0];
var age = parts[1];
Ответ написан