2009-09-29 2 views
0

im работает с расписанием рассылки и пытается разделить текст описания товаров на две строки, если их длиннее 24 символа.Извлечь 2 слова из строки

мое первое решение было что-то вроде этого:

If Row.Description.Length >= 24 Then 
TextToPrint &= Row.Description.Substring(0, 24) & "  $100" 
TextToPrint &= Row.Description.Substring(24) & vbNewLine 
else 
TextToPrint &= Row.Description & filloutFunction(Row.Description.length) &"  $100" & vbNewLine 
end if 

но дает этот результат.

A product with a long na $100 
me that doesn't fit   

Я не могу понять, как сделать функцию, чтобы разделить описание, чтобы мы выглядели как нормальные.

A product with a long  $100 
name that doesn't fit 

надежды я сделал себе ясно /:

ответ

0

Мой первый выстрел,

private static List<string> SplitSentence(string sentence, int count) 
{ 
    if(sentence.Length <= count) 
    { 
     return new List<string>() 
       { 
        sentence 
       }; 
    } 

    string extract = sentence.Substring(0, sentence.Substring(0, count).LastIndexOfAny(new[] 
                         { 
                          ' ' 
                         })); 

    List<string> list = SplitSentence(sentence.Remove(0, extract.Length), count); 

    list.Insert(0, extract.Trim()); 

    return list; 
} 

и так:

string sentence = "A product with a long name that doesn't fit"; 

List<string> sentences = SplitSentence(sentence, 24); 
sentences[0] = sentences[0] + "  $100"; 

Я думаю, что можно оптимизировать.

+1

thankyou! Я нашел это полезным! – Alexander

1

Если его больше, чем 24, то обратите внимание на символ пробела с точки 23 убывающей. Когда вы его найдете, разделите строку на эту позицию. Эта система «столбцов» у вас выглядит довольно неприятно - где это происходит, экран?

+0

к принтеру чека. Один ряд на бумаге имеет ширину в 42 символа. Мне нужно восстановить 18 символов для «столбца количества», чтобы иметь «выравнивание по правому краю» – Alexander

+0

ах, понятный тогда. – UpTheCreek

0

Что-то, как это должно работать:

Dim yourString = "This is a pretty ugly test which should be long enough" 
Dim inserted As Boolean = False 
For pos As Integer = 24 To 0 Step -1 
    If Not inserted AndAlso yourString(pos) = " "c Then 
     yourString = yourString.Substring(0, pos + 1) & Environment.NewLine & yourString.Substring(pos + 1) 
     inserted = True 
    End If 
Next 
+0

Спасибо, что сработало отлично! – Alexander

Смежные вопросы