--参数为一个字符串和需要多少个字符换行
--函数体内操作判断换行位置是否为空格,否的话需要添加链接符“-”
--返回一个设置好的字符串和行数(以便通过行数来设置字符scale)
function lua_string_autoLine2(str,lineNum)
local n=1; --用来计数行数
local num = cocos.splitUTF8(str) -- 一个计算字符串长度的封装函数(文章列表内有)
if num <= lineNum then -- 判断字符串长度是否 < 需要换行长度 false则不需要换行
return str,n;
end
local index = 0;
local extPos = 0;
while(true) do
index = index + 1;
local cPos = (lineNum)*index + extPos;
local temp = string.sub(str,cPos,cPos);
local befTemp = string.sub(str,cPos-1,cPos-1);
local nextTemp = string.sub(str,cPos+1,cPos+1);
if temp ~="" then
--根据当前位和前一位判断是否需要加连接符
if (temp ~= " " and befTemp ~=" ") and (temp ~= " " and nextTemp ~=" ") then
local fs = string.sub(str,1,(cPos-1))
local ss = string.sub(str,(cPos))
str = fs.."-".."\n"..ss;
n=n+1;
--每次一个换行一个-是增加两个前移位置来寻找,因为增加了一个实体字符 “-”,所以实际只加了一位
extPos = extPos + 1;
--根据当前位和前一位判断是否需要加连接符
elseif temp ~= " " and befTemp ==" " then
local fs = string.sub(str,1,(cPos-1))
local ss = string.sub(str,(cPos))
str = fs.." ".."\n"..ss;
n=n+1;
--每次一个换行一个-是增加两个前移位置来寻找,因为增加了一个实体字符 “-”,所以实际只加了一位
extPos = extPos + 1;
else
local fs = string.sub(str,1,cPos)
local ss = string.sub(str,cPos+1)
str = fs.."\n"..ss;
extPos = extPos + 1
n=n+1;
end
else
break;
end
end
return str,n;
end