Разбивка строки на части
От: FireShock Россия  
Дата: 31.07.07 09:48
Оценка:
Функция отсылает по SMS входящий параметр (строка). Если строка очень длинная, то надо ее бить на строки не длиннее 100 символов, но чтоб слова не бились. Пусть лучше слово перейдет в следующую часть, чем будет ее кусок.

Как лучше осуществить такую разбивку?

Хорошо это делает RichTextBox co свойством WordWrap. После этого читать из него построчно. Есть ли более простой способ?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Instagram
Re: Разбивка строки на части
От: TK Лес кывт.рф
Дата: 31.07.07 10:09
Оценка: 2 (1)
Здравствуйте, FireShock, Вы писали:

FS>Как лучше осуществить такую разбивку?

FS>Хорошо это делает RichTextBox co свойством WordWrap. После этого читать из него построчно. Есть ли более простой способ?

Разбейте строку на слова а потом, склейте из них стороки в требуемом виде.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Разбивка строки на части
От: Хнык Россия  
Дата: 31.07.07 12:05
Оценка: 2 (1)
Здравствуйте, FireShock, Вы писали:

FS>Функция отсылает по SMS входящий параметр (строка). Если строка очень длинная, то надо ее бить на строки не длиннее 100 символов, но чтоб слова не бились. Пусть лучше слово перейдет в следующую часть, чем будет ее кусок.


FS>Как лучше осуществить такую разбивку?


FS>Хорошо это делает RichTextBox co свойством WordWrap. После этого читать из него построчно. Есть ли более простой способ?


Ищи ласт индекс спэйса в строке, в качестве старта — номер_строки*макс.длина_строки и учитывай поправку на перенос слов.
Мну думает. Значит. Ага.
Re[2]: Разбивка строки на части
От: FireShock Россия  
Дата: 31.07.07 12:14
Оценка:
Здравствуйте, Хнык, Вы писали:

Х>Ищи ласт индекс спэйса в строке, в качестве старта — номер_строки*макс.длина_строки и учитывай поправку на перенос слов.

Благодарю, конечно, но сделал уже так:

string[] strSmsWords = strLongSms.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
string part = "";
List<String> smsParts = new List<String>();

for (int cnt = 0; cnt < strSmsWords.Length; cnt++)
{
  if ((part + " " + strSmsWords[cnt]).Length < 60)
  {
    part += " " + strSmsWords[cnt];
  }
  else
  {
    smsParts.Add((smsParts.Count + 1).ToString() + ") " + part.Trim());
    part = strSmsWords[cnt];
  }
}
if (part != "")
  smsParts.Add((smsParts.Count + 1).ToString() + ") " + part.Trim());
... << RSDN@Home 1.2.0 alpha rev. 0>>
Instagram
Re[3]: Разбивка строки на части
От: Pavel_Agurov Россия  
Дата: 31.07.07 12:45
Оценка: +3
Строки в цикле через плюсик лучше не складывать. Используйте StringBuilder.
Re[4]: Разбивка строки на части
От: abatishchev Россия http://godfather.net.ru
Дата: 01.08.07 14:39
Оценка:
Здравствуйте, Pavel_Agurov, Вы писали:

P_A>Строки в цикле через плюсик лучше не складывать. Используйте StringBuilder.


почему?
Re[5]: Разбивка строки на части
От: GlebZ Россия  
Дата: 01.08.07 16:40
Оценка:
Здравствуйте, abatishchev, Вы писали:

P_A>>Строки в цикле через плюсик лучше не складывать. Используйте StringBuilder.


A>почему?

Потому что каждая строка с плюсами генерит новый объект. StringBuilder — работает с одним буфером. При интенсивном использовании желателен именно StringBuilder чтобы поберечь GC от излишней работы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.