【发布时间】:2020-08-30 01:39:19
【问题描述】:
我目前正在为游戏 Mobile Legends 开发一款创意游戏内文字应用程序。该应用程序可以更改您在游戏中聊天时使用的文本颜色。还有其他添加,如粗体、斜体、下划线和删除线,最终输出是供您输入的代码。该应用程序旨在用户友好且易于使用。但是,我在创意方面遇到了麻烦。
网站:https://mlcolor.netlify.app/
我制作了自己的富编辑器,使用 execcommand。我需要一个将 HTML 格式(富编辑器生成)转换为 Mobile Legends 文本格式的解决方案。
Mobile Legends 格式
这与 HTML 相同。而不是<b>Hello World</b>,它使用括号[b]Hello World[/b]
这些是 Mobile Legends 中与 HTML 非常相似的格式:
粗体:[b]Hello World[/b]
斜体:[i]Hello World[/i]
下划线:[u]Hello World[/u]
罢工:[s]Hello World[/s]
foreColor: [FF0000]Hello World 它使用十六进制代码。
问题
如何转换此代码(示例输出):
Hello World!
<b><i><u><strike>Hello World!</strike></u></i></b>
到这里:
[b][i][u][s]Hello World![/b][/i][/s]
我的解决方案
我使用了一种使用.replace(/<b>/g,'[b]') 的方法。但是,如果格式变得太复杂,则更难替换标签。代码变得复杂并且有很多属性。
复杂格式示例:
Lorem ipsum dolor 坐
amet.
<span style="font-family: "Open Sans", Arial, sans-serif; font-size: 14px; text-align: justify; background-color: rgb(255, 255, 255);"><span style="text-decoration: underline;"><font color="#a9fcd4"><i>Lo</i><b>rem</b></font></span> <i style="text-decoration: underline;"><font color="#0000cc">ipsu<b>m</b></font></i> <b style="text-decoration: underline;"><i><font color="#cc00cc">dolor</font></i></b> <u><font color="#cccc00">sit</font></u> <strike><font color="#cc00cc"><b>amet</b><i>.</i></font></strike></span><br>
免责声明:无论如何,我都不是专业的编码员,所以我深表歉意 对于任何业余错误。编码只是我业余时间的爱好,我 自从我玩以来,决定为 Mobile Legends 社区制作这个应用程序 游戏也是,想装饰我的简历和聊天文字。
【问题讨论】:
-
“Mobile Legends”可能的格式列表是否完整?这个问题是为了防止答案会得到评论“啊好,现在我还需要转换背景颜色如下,还有行间距,还有对齐,还有......”
-
感谢您的回答。可能的格式列表已经完成。不再添加。谢谢!
-
纯文本中包含
[等特殊字符时如何转义? -
嘿!谢谢这个问题。在此之前我并没有真正考虑过这种可能性。如果他们输入特殊字符,它将以纯文本显示,因为我还没有为那部分编码。就目前而言,我的应用程序中不允许使用特殊文本。我会在应用内放一个这样的标志。再次感谢。这让我看到了我的应用程序中的一个我以前没有考虑过的漏洞。
-
颜色设置保持有效多长时间(因为没有相应的结束标签)?例如
[b][FF0000]This[/b] test。 “测试”还是红色的吗?
标签: javascript html css algorithm fonts