cocos2dx-lua 快速截取指定字符数量的字符串

本文写来就是为了方便使用,并没有过多的技术可言!然而,我们不能每次都写一遍这样的代码,我们只是要方便复用,方便在不同的项目中去复用!

我们一起拿来看代码吧:

 

--截取中英混合的UTF8字符串,endIndex可缺省
function funA:SubStringUTF8(str, startIndex, endIndex)
    if startIndex < 0  or endIndex < 0 then
       return str
    end
    if endIndex == nil then 
        return string.sub(str, self:SubStringLimitSize(str, startIndex));
    else
        return string.sub(str, self:SubStringLimitSize(str, startIndex), self:SubStringLimitSize(str, endIndex ) - 1);
    end
end


--获取字符串中在不超过一定字节的中文字节数
function funA:SubStringLimitSize(str, index)
    local curIndex = 0;
    local i = 1;
    local lastCount = 1;
    repeat 
        lastCount = self:SubStringGetByteCount(str, i)
        i = i + lastCount;
        curIndex = curIndex + 1;
    until(i >= index);
    return i - lastCount;
end


--返回当前字符实际占用的字符数
function funA:SubStringGetByteCount(str, index)
    local curByte = string.byte(str, index)
    local byteCount = 1;
    if curByte == nil then
        byteCount = 0
    elseif curByte > 0 and curByte <= 127 then
        byteCount = 1
    elseif curByte>=192 and curByte<=223 then
        byteCount = 2
    elseif curByte>=224 and curByte<=239 then
        byteCount = 3
    elseif curByte>=240 and curByte<=247 then
        byteCount = 4
    end
    return byteCount;
end


好了,不妨验证一下,超过三个汉字就截取,显示为XXX...,下面我们调用看看:

 

 

local playerName = playerInfo.name
if string.len(playerName) > 12 then
	playerName = funA:SubStringUTF8(playerName, 0, 12).."..."
end 
txtPlayerName:setString(playerName)


=================================== the end ====================================

 

 

 

好了,今天的分享就到这里,如有不足之处,还望大家及时指正,随时欢迎探讨交流!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对酒当歌﹏✍

您的鼓励是我写作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值