Добавьте разрыв строки после 4 слов в строке в C # - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь создавать квитанции клиентов с помощью PrintDocuments Control, и теперь я хочу отобразить нижний колонтитул в квитанциях клиентов.Текст нижнего колонтитула хранится в переменной строкового типа: String Footertex="ABC DEF GHIJK LMNOP QRSTUVWXYZ AAA BBBBBBB ABCD";, но я использую термопринтер для чеков клиентов, и в нижнем колонтитуле печатается только следующий текст:

ABC DEF GHIJK LMNOP

Теперь я хочу, чтобы он автоматически прерывал строкуи оставшийся текст должен отображаться в следующей строке, например так:

ABC DEF GHIJK LMNOP
QRSTUVWXYZ AAA 
BBBBBBB ABCD

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

string item = (_List[i].Qty + " x " + _List[i].Name);
int nInterval1 = 18;
string res1 = String.Concat(item.Select((c, j) => i > 0 && (i % nInterval1) == 0 ? c.ToString() + Environment.NewLine : c.ToString()));

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

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете сделать это, используя следующий код (с моими комментариями):

var item = "Hide Copy Code QRSTUVWXYZ AAA BBBBBBB ABCD";
const int interval = 18;
var words = item.Split();
var result = "";
var symbolsInCurrentLine = 0;
foreach (var word in words)
{
    if (word.Length + symbolsInCurrentLine > interval)  // after adding word line will be longer than required
    {
        result += "\n";
        symbolsInCurrentLine = 0;
    }
    else
    {
        if (symbolsInCurrentLine > 0)  // add space after previous word if needed
        {
            result += " ";
            symbolsInCurrentLine++;
        }
        result += word;  // append word
        symbolsInCurrentLine += word.Length;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...