Я искал запись приложения консольного приложения на языке C#. Я нашел здесь много полезных примеров, но у меня проблемы с тем, что у меня есть.C# word wrap, как ограничить создание новой строки на основе разных слов в строке
Код, который у меня есть, создаст новую строку после каждого слова, которое «переполняет» columnLimit
. Мне нужен/нужен способ добавления новой строки только в том случае, если это слово не является окончательным в строке и, если возможно, добавить дефис, когда слово переполняет между двумя строками (так что это будет слово сплиттер, а не word wrapper).
Я знаю, что это, вероятно, очень простое решение, но я новичок в C#, и я действительно застрял в этой проблеме. Решение для кодирования, чтобы я мог видеть, где я ошибся, было бы идеальным.
Может ли кто-нибудь помочь мне с этим?
public string formatText(string longSentence, int columnLimit)
{
string[] words = longSentence.Split(' ');
StringBuilder newLongSentence = new StringBuilder();
string line = "";
foreach (string word in words)
{
if ((line + word).Length > columnLimit)
{
newLongSentence.AppendLine(line);
line = "";
}
line += string.Format("{0} ", word);
}
if (line.Length > 0)
newLongSentence.AppendLine(line);
return newLongSentence.ToString();
}
Это почти идеальное - при выполнении кода, однако он по-прежнему создает новую строку, даже после того, как последнее слово в строке .. любая идея о том, как это исправить? (его основная проблема, из-за которой мои тесты терпят неудачу) – Dusky
Отредактировано для изменения этого, надеюсь, что это сработает для вас сейчас –
При запуске теперь это приводит к тому, что в этой строке не было обработано исключение ArgumentOutOfRangeException (newLongSentence.AppendLine (строка + word.Substring (0, word.length + extraLetters - 1) + "-"), дополнительная информация говорит: длина не может быть меньше нуля. – Dusky