Html格式的富文本转换成Unity可识别的富文本
需求:做游戏公告的时候,需要在java端使用富文本,java端的格式是以"<p>"段落内容..."</p>"
进行分段,<span ....> 正文内容.... </sapn>
进行富文本编辑,当后台将这些直接传给unity的时候,unity需要将其转成自己可识别的富文本。
以下是完整的lua代码,调用HtmlTool:HtmlToLua()
,将需要转换的字符串传进,返回值是已经替换好的字符串。目前是替换了颜色和字号,需要改的可以在HtmlTool:Justgsub()
方法中进行修改。
--[[
Author: 石英男
Github: https://gitee.com/anshun_xun_yu_network/doudizhu3d_client.git
Date: 2021-07-08 10:18:25
LastEditors: 石英男
LastEditTime: 2021-07-09 17:54:07
Description:
--]]
local HtmlTool = {
}
--以P标签进行分段存储的字符串
local pTab = {
}
local spanIndexTab = {
}
local SpecialSymbolsTab = {
{
specialSymbols = "%<", rightStr = "<"},
{
specialSymbols = "%>", rightStr = ">"},
{
specialSymbols = "%&", rightStr = "&"},
{
specialSymbols = "%"", rightStr = "“"},
{
specialSymbols = "%®", rightStr = "®"},
{
specialSymbols = "%©", rightStr = "©"},
{
specialSymbols = "%™", rightStr = "™"},
{
specialSymbols = "<br>", rightStr = "\n"}
}
local specialSymbolsIndex = 1
--[[
@description: 将传入的html格式的语言转换成unity可识别的富文本string
@param {tempStr 传入的string 值}
@return {*}
--]]
function HtmlTool:HtmlToLua(tempStr)
local result = ""
pTab = {
}
self:SubStrByPFlag(tempStr)
if next(pTab) == nil then
return tempStr
end
for index, value in ipairs(pTab) do
result = string.gsub(result .. self:Justgsub(value), "<p>", "")
result = string.gsub(result, "</p>", "\n")
result = self:GSubSpecialSymbols(result)
end
return result
end
--[[
@description: 以P标签进行分段
@param {*}
@return {*}
--]]
function HtmlTool:SubStrByPFlag(tempStr)
if string.len(tempStr) <= 0 then