Alxius
ентеры и без утф будут работать
у меня текст в псевдоCSV подается. я не могу написать энтер т.к. это завершит работу и придет обрезок текста
Alxius
мне нужно энтеры другим способом передавать изменяя строку уже прямо перед печатью
Igor
ну так стандартным string.gsub меняй
Alxius
а что можно?
Igor
если не нужно трогать utf8 символы многобайтовые, то можно
Alxius
круто
Igor
ты же будешь только однобайтовые трогать
Alxius
надеюсь ^ не многобайтовый
Igor
нет
Alxius
а \r\n - многобайтовый ?
Igor
https://www.asciitable.com/
Alxius
спасибо
Igor
а \r\n - многобайтовый ?
это два разных символа
Igor
\r - carriage return \n - newline
Igor
тем не менее, со всеми символами из таблицы ascii ты можешь работать напрямую
Igor
они не попадают под utf8
Alxius
как ни меняю чушь какая то получается + поломался другой оператор вывода текста заодно.
Alxius
^ все на месте.
Alxius
textdata_w_enter=string.gsub (textdata, '^','\n'); --\r
Alxius
пробовал и так и сяк
Alxius
на \n\r тоже пробовал менять.
Alxius
для линукс одного символа хватит?
Igor
потому что ^ - спецсимвол, его эскейпить надо
Igor
textdata:gsub('%^', '\n')
Alxius
ааа в процентах его измерять надо
Alxius
а я думал так:: (textdata, '\^','\n'); --\r
Alxius
не понимаю конструкцию textdata:gsub у меня сбоить логика начинает
Igor
символ, перед которым стоит процент не обрабатывается мэтчером
Alxius
так верно? textdata_w_enter=string.gsub (textdata, '%^','\n'); --\r
Alxius
тут вот всё ясно и понятно
Igor
да
Igor
https://www.lua.org/pil/20.2.html https://www.lua.org/pil/20.1.html
Igor
Тут всё предельно понятно расписано
Alxius
с \r вот так заработало
Alxius
частично верно. однако видимо
Igor
нужен \n, не \r
Alxius
а на винде \n будет работать?
Igor
ты виндовые функции не трогаешь, а только функции отрисовки
Igor
винда \r\n использует при работе с файлами
Alxius
я поставил. просто у меня другая часть программы которая слишком длинные строки режет нужндается в инфе что string.gsub произвел 1 или более замен
Alxius
эту инфу отуда он выдает нет?
Alxius
типа заменено 3 значений
Igor
втрой и третий аргумент gsub'а
Igor
из тех, которые он возвращает, в смысле
Alxius
textdata_new,koliczestwo_zamen=string.gsub (textdata, '%^','\n'); --\r
Alxius
так?
Igor
типа того
Alxius
мдя
Alxius
оно верно возвращает число замен, но моя нарезалка одновременно с этим кодом не может работать
Igor
зачем тебе вообще вручную резать длинные строки, когда есть getWrap в ловке?
Alxius
так откуда мне о нем знать то
Igor
https://love2d.org/wiki/Font:getWrap
Alxius
я впервые за 5 лет работы в Lua слышу
Alxius
также как и о printf
Igor
Советую вообще бегло по докам ловки пройтись, я так в своё время много интересного для себя открыл
Alxius
Alxius
мдааа
Alxius
очень крутой эффект
Alxius
может хрен с ним вернуть пусть режет каждые 70 букв принудительно
Igor
getWarp возвращает максимальную длину строки и ТАБЛИЦУ с порезанными строчками
Alxius
а переводы да хрен с ними
Alxius
всем было 5 лет похрен на переводы строк
Alxius
вот если бы он ПИКСЕЛИ возвращал было бы супер
Alxius
а то я не знаю как получить координату в пикселях после надписи
Alxius
СПРАВА от нее
Igor
Font:getWidth
Alxius
к любой строке?
Igor
получишь длину конкретной строки с конкретным фоном
Igor
Да
Alxius
и он учитывает и scaling и rotate и все параметры что я в lg.print пишу?
Igor
Нет, он только сам шрифт учитывает
Alxius
тогда он не нужен
Igor
А ротейт на ширину текста и не влияет
Igor
А так тебе просто на скейлинг умножить надо
Alxius
у меня везде Scaling используется
Alxius
да везде костылики подбивать надо. тут чуток правее надо тут чуток левее.
Alxius
пока буду думать как перевести строку
Alxius
function msgbox (textdata,x,y,wysotastroki,szerokosc) if (szerokosc==nil) then szerokosc=70; end; rozmiartekstu= utf8.len (textdata); strokss=math.floor (rozmiartekstu/szerokosc) ; if (textdata~=nil) then textdata_w_enter,koliczestwo_zamen=string.gsub (textdata, '%^','\n'); --\r end zameny_w_odnoj_stroke=0; wszystkozamian=0; for aa7=0,strokss,1 do if (aa7==nil) then aa7=0; end wycofac=utf8sub(textdata_w_enter, aa7*szerokosc, szerokosc); -- wycofac=string.sub(textdata, aa7*szerokosc, (aa7+1)*szerokosc); nenuzno,zameny_w_odnoj_stroke=string.gsub (wycofac, '%^','\n'); wszystkozamian=wszystkozamian+zameny_w_odnoj_stroke; smsg1="видимо число замен "..koliczestwo_zamen; lg.print(wycofac,x, y+aa7*wysotastroki+wszystkozamian*wysotastroki); end
Alxius
не выходит ничего :(
Alxius
вроде для каждой строки в резалке считаю произведенные замены отдельно. а все равно чето не так