Обрезать строку содержащую русские/английские символы

plalkeo

Известный
Автор темы
706
279
Версия MoonLoader
.026-beta
Как можно адекватно обрезать строку которая содержит русские и английские символы?
Просто если делать:

Lua:
a = "ПрIVет"
print(a:sub(1,6)) -- ПрIV
print(a:sub(1,7)) -- ПрIV�
А необходимо:

Lua:
a = "ПрIVет"
print(a:sub(1,6)) -- ПрIVет

Либо же:
Как можно в mimgui.InputText
сделать нормальное ограничение русских символов
Типо:
Lua:
local a = imgui.new.char[20]()
Но оно принимает только 10 русских либо 20 других символов
Как можно сделать чтобы было 20 русский либо 20 других?
 

CaJlaT

07.11.2024 14:55
Модератор
2,833
2,668
Как можно адекватно обрезать строку которая содержит русские и английские символы?
Просто если делать:

Lua:
a = "ПрIVет"
print(a:sub(1,6)) -- ПрIV
print(a:sub(1,7)) -- ПрIV�
А необходимо:

Lua:
a = "ПрIVет"
print(a:sub(1,6)) -- ПрIVет

Либо же:
Как можно в mimgui.InputText
сделать нормальное ограничение русских символов
Типо:
Lua:
local a = imgui.new.char[20]()
Но оно принимает только 10 русских либо 20 других символов
Как можно сделать чтобы было 20 русский либо 20 других?
1 Символ латиницы занимает 1 байт, а кириллица занимает 2 байта, поэтому такие приколы происходят
 
  • Нравится
Реакции: legnd и qdIbp

CaJlaT

07.11.2024 14:55
Модератор
2,833
2,668
можно ли как-то обойти эти приколы и сделать все нормально?
С mimgui нет, а вот с a:sub() ты сам накосячил, возможно у тебя кривая кодировка файла стоит, поставь Windows 1251. У меня нормально строку обрезает
Lua:
local a = "ПрIVет"
print(a:sub(1,5)) -- ПрIVе
print(a:sub(1,4)) -- ПрIV
1687785155354.png
 

plalkeo

Известный
Автор темы
706
279
С mimgui нет, а вот с a:sub() ты сам накосячил, возможно у тебя кривая кодировка файла стоит, поставь Windows 1251. У меня нормально строку обрезает
Lua:
local a = "ПрIVет"
print(a:sub(1,5)) -- ПрIVе
print(a:sub(1,4)) -- ПрIV
Посмотреть вложение 205762
возможно я так тупанул сильно, слушай, а можно как-то это внедрить в mimgui?
Чтобы сделать нормальное ограничение в InputText
Просто щас сколько пытался не получается обрезать строку и сохранить её в переменную, не хочет обрезать и сохранять
 

Lance_Sterling

Известный
963
336
возможно я так тупанул сильно, слушай, а можно как-то это внедрить в mimgui?
Чтобы сделать нормальное ограничение в InputText
Просто щас сколько пытался не получается обрезать строку и сохранить её в переменную, не хочет обрезать и сохранять
просто поставь 256 байт и не парься, ну или 1024 если много надо
 

Andrinall

Известный
702
518
возможно я так тупанул сильно, слушай, а можно как-то это внедрить в mimgui?
Чтобы сделать нормальное ограничение в InputText
Просто щас сколько пытался не получается обрезать строку и сохранить её в переменную, не хочет обрезать и сохранять
Попробуй на авось imgui.new.char[20](u8"")
 

CaJlaT

07.11.2024 14:55
Модератор
2,833
2,668
Попробуй на авось imgui.new.char[20](u8"")
Как раз таки в UTF-8 символ кириллицы и весит 2 байта
 

Lance_Sterling

Известный
963
336
я бы так и сделал если бы мне не нужен был бы четкий огран в 70-80 символов)
Ну так подбирай количество байтов пока не найдешь нужный результат, и в ипуте либо пиши ffi.sizeof(переменная) либо количество байтов которые ты указал