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

plalkeo

Известный
Автор темы
522
190
Версия 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

Овощ
Модератор
2,806
2,607
Как можно адекватно обрезать строку которая содержит русские и английские символы?
Просто если делать:

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

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

plalkeo

Известный
Автор темы
522
190
С 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

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

Andrinall

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

CaJlaT

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

Lance_Sterling

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