LINUX.ORG.RU

[Gtk+] TextIter в TextBuffer и положение в строке TextBuffer.Text


0

1

Нахожу некоторую подстроку в строке (string, не line!) TextBuffer.text. Ок, нашлась, получил ее позицию, все замечательно. Дальше пытаюсь получить TextIter по той позиции через get_iter_at_offset (). Вот тут дальше творится что-то невообразимое. Координаты не совпадают. Точнее, совпало только до перевода строки. + там еще табуляции есть, они вставленны в TextBuffer.Text через «\t».

В общем, вопрос, как совместить координату в string и координату в самом текстовом буфере.

★★★★★

В общем, кому интересно решение. Загвоздка была в том, что положение в строке считается байтами, а смещение в TextBuffer символами. Пришлось написать свой велосипед. Он конечно неказист, но зато работает. Если кто придумает лучше, подскажет лучшее решение - буду рад.

private int get_offset_at_index (string s, int i) {
	int n = 0;
	unichar c;
	while (s.index_of_nth_char (n) < i)
		s.get_next_char (ref n, out c);
	return n;
}
hibou ★★★★★
() автор топика

Работай не с байтовыми строками, а с юникодными. Тогда не надо будет костыли пихать.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.