Я хочу разбить длинную строку по символам и длине строки, не разбивая слова. В моей строке я использую "|"как мой разделитель, и каждая строка никогда не должна заканчиваться разделителем. Мне нужно разбить на «|», не разбивая слов.
Я попробовал следующее, которое смотрит на максимальную длину строки и проверяет, все ли подходит. Теперь я должен осуществить разделение с помощью "|"символ без прерывания проверки длины строки.
int partLength = 35;
string sentence = "Silver badges are awarded for longer term goals. Silver badges are uncommon.";
string[] words = sentence.Split(' ');
var parts = new Dictionary<int, string>();
string part = string.Empty;
int partCounter = 0;
foreach (var word in words)
{
if (part.Length + word.Length < partLength)
{
part += string.IsNullOrEmpty(part) ? word : " " + word;
}
else
{
parts.Add(partCounter, part);
part = word;
partCounter++;
}
}
parts.Add(partCounter, part);
foreach (var item in parts)
{
Console.WriteLine(item.Value);
}
Я пробовал следующее для разбивки по символу "|":
string sentence = "The dog had a bone | a ball | and other toys.";
char charToTrim = '|';
string[] words = sentence.Split();
foreach (string word in words)
Console.WriteLine(word.TrimEnd(charToTrim));
Это напечатает все слова в новой строке, что не правильно. Поэтому в длинном тексте мне нужно взглянуть на максимальную длину строки, а также на разделитель «|». Слова должны совпадать в пределах строки, но новая строка не может заканчиваться на «|».
Таким образом, верно следующее:
Item 1 |Элемент 2 |Пункт 3 |Элемент 4
|Элемент 5 |Etc
Но следующее неверно:
Item 1 |Элемент 2 |Пункт 3 |Элемент 4 |
Элемент 5 |Etc