前言

  在游戏中,我们经常会遇到汉字的多行显示,比如名字竖行显示等。如下图:

为了实现上面的效果,lua实现分行是通过  \n  实现的,所以我们需要取出汉字,然后插入 \n 实现分行效果。还有一种就是设置Label的的实际大小,也可以实现分行效果。

操作中文字符串,获取字符串长度

    local str = "哈哈哈哈"
local _,strTest = string.gsub(str,'[\128-\255][\128-\255]',' ')
local _, count = string.gsub(str, "[^\128-\193]", "") print(count)
print(strTest)

中文字符串中单个汉字取出,放到tab中

简单实现一个功能函数,将字符串中的单个汉字取出,放到一个数组中,然后再进行其他操作。

实现函数为:

--功能将汉字插入\n分行显示
--可扩展,比如一行显示几个字等
--这里是一个测试n每行显示一个
function branchStr(str)
local sNum = num or
local tab = {}
for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do
tab[#tab+] = uchar
end
local resultStr = ""
for i=,#tab do
resultStr = resultStr..tab[i].."\n"
end
return resultStr
end

调用上面的函数,我们可以将得到插入\n 的字符串,然后在文本框中使用就可以了。这里的函数可以扩展,比如一行显示多少个汉字等。

quick lua 多行显示第二种方式控制文本的大小


--------------------------------
-- 使用 TTF 字体创建文字显示对象,并返回 Label 对象。
-- @function [parent=#display] newTTFLabel
-- @param table params 参数表格对象
-- @return Label#Label ret (return value: cc.Label) Label对象


--[[--


使用 TTF 字体创建文字显示对象,并返回 Label 对象。


可用参数:


- text: 要显示的文本
- font: 字体名,如果是非系统自带的 TTF 字体,那么指定为字体文件名
- size: 文字尺寸,因为是 TTF 字体,所以可以任意指定尺寸
- color: 文字颜色(可选),用 cc.c3b() 指定,默认为白色
- align: 文字的水平对齐方式(可选)
- valign: 文字的垂直对齐方式(可选),仅在指定了 dimensions 参数时有效
- dimensions: 文字显示对象的尺寸(可选),使用 cc.size() 指定
- x, y: 坐标(可选)


align 和 valign 参数可用的值:


- cc.TEXT_ALIGNMENT_LEFT 左对齐
- cc.TEXT_ALIGNMENT_CENTER 水平居中对齐
- cc.TEXT_ALIGNMENT_RIGHT 右对齐
- cc.VERTICAL_TEXT_ALIGNMENT_TOP 垂直顶部对齐
- cc.VERTICAL_TEXT_ALIGNMENT_CENTER 垂直居中对齐
- cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM 垂直底部对齐


~~~ lua

 
dimensions 参数就是设置显示的大小
    --描述
local desLabel = cc.ui.UILabel.new({
text = "哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁哈喽哈鲁",--level
align = cc.ui.TEXT_ALIGN_CENTER,
color = cc.c3b(, , ),
size = ,
dimensions = cc.size(bg:getContentSize().width-,)
})
:align(display.CENTER,bg:getContentSize().width/,)
:addTo(bg)
dimensions :参数

lua 操作中文字符串之截取和长度竖排显示的更多相关文章

  1. c# 超长字符串截取固定长度后显示...(超长后面显示点点点) 通用方法

    通用方法: 此方法是采用unicode编码方式,一个汉字为2个字节,一个数字or字母是1个字节,此方法传入的第二个长度参数是unicode长度. 所以不用考虑截取的字符串是汉字还是英文字母的问题,参数 ...

  2. mysql中中文字符串的截取

    SET NAMES 'utf8'; SET v_length = character_length(citys); SET citys = left(citys COLLATE utf8_bin, v ...

  3. CSS截取截取字符长度并显示省略号的方法

    HTML部分 <div> <span>这是一个CSS3截取截取字符的例子.它根据宽度来处理.</span> </div> <div class=& ...

  4. PHP截取中文字符串方法总结

    <?php @header('Content-type: text/html; charset=UTF-8'); $arr = "sa撒的发dfa多少sfd看sdf得12上24飞452 ...

  5. thinkphp模板中截取中文字符串的方法分享

    前段用thinkphp写了一个系统,感觉thinkphp学起来比较容易,开发起来了比较顺手,其中一个关键的因素就是它的模版引擎相当强大,使用方法跟smarty类似,在模版中还可以用php代码,有模版包 ...

  6. php 获取中文长度 截取中文字符串

    #获取中文长度mb_strlen($str,$encoding); #截取中文字符串 mb_substr(str,start,length,encoding);

  7. (实用篇)php中计算中文字符串长度、截取中文字符串的函数代码

    在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务 ...

  8. php中计算中文字符串长度、截取中文字符串

    在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数 ...

  9. PHP计算中文字符串长度 、截取相应中文字符串

    PHP计算字符串长度     及其   截取相应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,' ...

随机推荐

  1. HTML5 表单属性

    form 属性 form 属性规定输入域所属的一个或多个表单. 注释:form 属性适用于所有 <input> 标签的类型. form 属性必须引用所属表单的 id: 实例 <for ...

  2. CMD中常用命令

    打开CMD的几种方法: 搜索一下 1: 打开我的电脑,在地址栏输入该地址后按回车键打开:C:\WINDOWS\system32\cmd.exe 2: 打开我的电脑,进入C盘WINDOWS\system ...

  3. webshell下执行命令脚本汇集

    cmd1.asp <object runat=server id=shell scope=page classid="clsid:72C24DD5-D70A-438B-8A42-984 ...

  4. 帝国备份王(Empirebak)万能cookie及拿shell

    1.伪造cookie登录系统(其实这一步多余的,大多用户连密码都没改,都是默认的123456) 登录成功设置4个cookie,看代码 function login($lusername,$lpassw ...

  5. smartlink

    链接:https://www.zhihu.com/question/21783165/answer/20323202 Wi-Fi本身是属于固定频段上的TDD通讯机制,目前尚用的也就是2.4G和5.8G ...

  6. github标记

    <template> <a href="https://github.com/lmk123/Runner" class="github-corner&q ...

  7. Android课程---布局管理器之相对布局(一)

    下面示例的是在父容器里如何设置按钮的位置,难度:***,重点是找到一个主按钮,设置它的id,然后根据它来设置其他按钮在父容器的位置. 代码示例: <?xml version="1.0& ...

  8. 阿里云专有网络与弹性公网IP

    阿里云服务器经典网络和专有网络究竟有什么区别? 在用户提交订单购买阿里云ECS云服务器时,会面临怎样选择网络类型的烦恼,阿里云服务器定制购买时,网络类型里的经典网络和专有网络(VPC)是什么含义,该怎 ...

  9. BFC以及文档流

    在一个文档流中,盒子模型元素的位置会互相影响. 当一个BFC出现在文档流中时,BFC内部的盒子模型元素同BFC外部的元素之间的位置不会互相影响. 相当于BFC重新创建了一个文档流. 举例: 一个文档流 ...

  10. 解决git .ignore文件无效

    在用 Git 进行代码管理的时候,我们会用 .gitignore 文件来描述哪些文件是不需要进行版本管理的,也就是被忽略掉. 如果我们在第一次提交的时候,忘记添加 .gitignore 文件或者在首次 ...