Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
zabej
34 / 34 / 8
Регистрация: 29.05.2011
Сообщений: 65
1

Разбивка длинной строки на подстроки, которые будут помещаться в TextBox без переноса

16.02.2012, 15:34. Просмотров 2075. Ответов 6
Метки нет (Все метки)

Добрый день. Имеется длинная строка, например 500000 символов. Необходимо ее разбить на массив строк, таких, которые бы вмещались, например в TextBlock размером Height="800" Width="800". Я пробовал сделать это так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
List<string> myList = new List<string>();
while (true)
{
   TextPointer start = textBlock.ContentStart;                   
   TextPointer end = textBlock.GetPositionFromPoint(new Point(textBlock.Width, textBlock.Height - 20), true);
   TextRange tg = new TextRange(start, end);
   string s = tb1.Text.Remove(0, tg.Text.Length);
   myList.Add(tg.Text);
   textBlock.Text = s;
   if (string.IsNullOrWhiteSpace(s))
      break;
}
Но это долго. Операция
C#
1
textBlock.GetPositionFromPoint(new Point(textBlock.Width, textBlock.Height), true);
выполняется очень долго.
Разбивка текста приблизительно состоящего из 500000 символов происходит около 3 минут.
Есть какие-нибудь идеи как это сделать быстро?
PS: Использую WPF.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2012, 15:34
Ответы с готовыми решениями:

Разбить строку на подстроки методом Split без учета переноса строк
Здравствуйте. string arr1 =...

Есть ли варианты безошибочного переноса длинной строки текста на новую строку?
Имеем: Console.WriteLine(&quot;Здесь находиться длинная строка, которая не...

Разделение строки на подстроки без разделителей...
Задача: Есть некая строка, состоящая из символов. Вопрос, как разделить строку...

Разделение строки на подстроки без особого разделителя
Чтобы понять вопрос, я приведу вот такой пример: допустим есть: string T =...

Разбивка строк списка на подстроки и загрузка в TextBox
Как сделать следующее: есть строки в лист боксе примерно такого типа asdf...

6
KeBJIaP
145 / 142 / 32
Регистрация: 21.01.2012
Сообщений: 545
Завершенные тесты: 1
16.02.2012, 16:16 2
Может записать во временный файл и потом читать по несколько символов?
0
zabej
34 / 34 / 8
Регистрация: 29.05.2011
Сообщений: 65
17.02.2012, 08:47  [ТС] 3
KeBJIaP, не совсем понял... Можно поподробней?

Добавлено через 16 часов 23 минуты
Неужели не у кого нет идей?
0
Niades
86 / 72 / 6
Регистрация: 11.09.2011
Сообщений: 118
17.02.2012, 14:25 4
Вот так должно работать:
C#
1
2
3
4
5
6
7
8
   TextPointer start = textBlock.ContentStart;                   
   TextPointer end = textBlock.GetPositionFromPoint(new Point(textBlock.Width, textBlock.Height - 20), true);
   TextRange tg = new TextRange(start, end);
   int length = tg.Length;
   List<string> myList = new List<string>();
   for(int i=0; i<=textBlock.Text.Length; i+=length){
        myList.Add(textBlock.Text.SubString(i, i>textBlock.Text.Length?textBlock.Text.Length:(i+length)));
   }
0
zabej
34 / 34 / 8
Регистрация: 29.05.2011
Сообщений: 65
17.02.2012, 15:03  [ТС] 5
Niades,
1. Некорректно разбивает.
2. Переносы слов не работают, т.е. TextTrimming="None"
3. Этот вариант уже пробовал.
Причина неработоспособности этого метода в том, что разные символы имеют разную ширину, соответственно занимают разное место на экране. Поэтому нельзя использовать подсчет символов, так как в одном случае одно количество текста помещается в данный TextBlock, а в другом случае нет.


PS. Администратор, почему перенесли тему и перемеиновали ее так, что даже автор темы перестал понимать ее суть по заголовку??????
0
MansMI
1450 / 1159 / 550
Регистрация: 08.01.2012
Сообщений: 4,509
17.02.2012, 16:12 6
C#
1
TxtBox.Font = new Font("Courier New", 10, FontStyle.Regular);
???
0
zabej
34 / 34 / 8
Регистрация: 29.05.2011
Сообщений: 65
17.02.2012, 16:19  [ТС] 7
Times New Roman? как быть тогда? ) Нужен подход не зависящий не от размера не от шрифта
0
17.02.2012, 16:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2012, 16:19

Разбивка строки на подстроки
Добрый день.Столкнулся с новой проблемой.У меня есть текстовый файл...

Разбивка строки на подстроки в JavaScript
Есть строка в которой содержатся некоторые значения, разделенные символом '?',...

Нахождения самой длинной подстроки без повторений
Всем доброго времени суток! Застрял с решением одной задачи. Не могли бы вы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru