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

plalkeo

Известный
Автор темы
521
189
Версия 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,605
Как можно адекватно обрезать строку которая содержит русские и английские символы?
Просто если делать:

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,605
можно ли как-то обойти эти приколы и сделать все нормально?
С mimgui нет, а вот с a:sub() ты сам накосячил, возможно у тебя кривая кодировка файла стоит, поставь Windows 1251. У меня нормально строку обрезает
Lua:
local a = "ПрIVет"
print(a:sub(1,5)) -- ПрIVе
print(a:sub(1,4)) -- ПрIV
1687785155354.png
 

plalkeo

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

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

Andrinall

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

CaJlaT

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

Lance_Sterling

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