lua 操作中文字符串之截取和長度豎排顯示


前言

  在游戲中,我們經常會遇到漢字的多行顯示,比如名字豎行顯示等。如下圖:

為了實現上面的效果,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 1
    local tab = {}
    for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do 
        tab[#tab+1] = uchar
    end
    local resultStr = ""
    for i=1,#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(255, 255, 220),
        size = 20,
        dimensions = cc.size(bg:getContentSize().width-10,60)
        })
    :align(display.CENTER,bg:getContentSize().width/2,60)
    :addTo(bg)
dimensions :參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM