• Как разделить длинный текст на строки в C#?

    @C6OI
    Спасибо за подсказку, сделал себе для этого расширение.

    Кому нужно, ловите:
    Код

    public static class StringExtensions {
        /// <summary>
        /// Разделяет строку на несколько строк не превышая заданное количество символов в каждой строке
        /// </summary>
        /// <param name="text">Строка для деления</param>
        /// <param name="charsInString">Максимальное количество символов в каждой строке</param>
        /// <returns>Список строк, разделённых по символам</returns>
        public static List<string> SplitByCharacters(this string text, int charsInString) {
            // Список, куда будут складываться разделённые строки
            List<string> strings = new();
            
            // Если количество символов в исходной строке меньше или равно максимальному количеству символов, то вернуть список только с этой строкой
            if (text.Length <= charsInString) {
                strings.Add(text);
                return strings;
            }
            
            // Разделяем исходную строку на список слов из строки
            List<string> words = text.Split(" ", charsInString).ToList();
            
            while (true) {
                // Строка, в которую будут собираться слова
                string readyText = "";
    
                while (words.Count > 0) {
                    // Защита от бесконечного цикла
                    if (words[0].Length > charsInString) throw new ArgumentOutOfRangeException(nameof(words), "Количество символов в слове превышает максимальное количество букв в строке.");
                    
                    // Добавляем слово с пробелом к строке
                    readyText += $"{words[0]} ";
                    // Убираем слово из списка слов
                    words.Remove(words[0]);
                    
                    // Если слов не осталось, или если следующее слово превысит лимит букв, то прерываем сборку текущей строки
                    if (words.Count <= 0 || readyText.Length + words[0].Length > charsInString) break;
                }
                
                // Добавляем строку в список строк
                strings.Add(readyText);
                
                // Если слов не осталось - возвращаем список строк
                if (words.Count <= 0) return strings;
            }
        }
    }