2016-09-17 5 views
1

Я делаю перенос текста (чтобы отделить длинную строку на строки) в коронекак игнорировать tashkeel знак счет в текстовой упаковке в короне sdk?

function wrap(str, limit, indent, indent1) 
    indent = indent or "" 
    indent1 = indent1 or indent 
    limit = limit or 72 
    local here = 1-#indent1 

    str = replacePartOfString(str,"*","\n") 

    return indent1..str:gsub("(%s+)()(%S+)()", 
          function(sp, st, word, fi) 
          if fi-here > limit then 
           here = st - #indent 
           return "\n"..indent..word 
          end 
          end) 
end 

local someString = " This is intended for strings without newlines in them (i.e. after reflowing the text and breaking it into paragraphs.) This is intended for strings without newlines in them (i.e. after reflowing the text and breaking it into paragraphs.) This is intended for strings without newlines in them (i.e. after reflowing the text and breaking it into paragraphs.) This is intended for strings without newlines in them (i.e. after reflowing the text and breaking it into paragraphs.) " 

print_r(string.split(wrap(someString,70,"",""),"\n")) 

он отлично работает с английским и арабским, но единственной проблемой в том, что считает Tashkeel в аравийском как письма, что является лучший способ игнорировать этих персонажей и не считать их? Я хочу сохранить их, но не считать их в переносе текста.

image

ответ

1

string.gsub() работы по байт строки, а не на ее гольцов. Есть разница, когда строка содержит текст в Юникоде. Используйте библиотеку utf8, чтобы получить символы.

+0

внешняя библиотека? или библиотеку utf8 lua по умолчанию, любой пример? – DeyaEldeen

+0

Проблема, описанная OP, не является специфичной для UTF-8. Например, в 1-байтовом кодировании win1256 tashkeels также кодируются отдельными кодами, как если бы они были отдельными символами. –

+0

Я закончил тем, что сделал свою собственную упаковку. – DeyaEldeen