当前位置: 首页 > news >正文

网站改域名备案重庆高校在线开放课程平台

网站改域名备案,重庆高校在线开放课程平台,中企动力邮箱设置,深圳营销型网站建设 宝安西乡常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文,数字,英文进行识别,同样数量的汉字和同样数量的英文像素长度是不一样的,当我们限定固定长度后,在界面上的排版不够美观 痛点2…

常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 )

在这里插入图片描述

痛点1

无法对中文,数字,英文进行识别,同样数量的汉字和同样数量的英文像素长度是不一样的,当我们限定固定长度后,在界面上的排版不够美观

在这里插入图片描述
在这里插入图片描述

痛点2

当我们需要对用户的名称加限制长度的时候, 不同的文本( 汉字,字母,数字,符号 ) 外观上长度不一,常规的裁切不够优雅,文本看上去也是突然的停顿了,比如中间的 “巴拉巴拉小魔仙”, “仙” 直接裁切了,处理方式太过僵硬

当然,我们可以用自动适配来缩小字体来解决以上问题,但整体看上去又不够整齐,很容易出现大小层次不齐,整体看上去会很丑
在这里插入图片描述

如何解决呢?

第一个痛点,我们可以通过像素的方式,以单元格的方式去计算文本实际长度, 而非固定长度限制

如: 你好,世界! 占用的是10个单元格
而:hello,world 占用的是10个单元格

如上,虽然字符串长度不一样,但是实际像素却是一样的 ( 这里我们做一个设定, 不足一个字母长度的当成一个字母长度, 如 !, ., _,-, 这些都是字母,但长度不一,我们按最大长度来处理,也就是一个英文字母 A的长度来设定 )

如何去判断字符串中有多少个汉字,多少个特殊字符呢? 我们需要写一个正则表达式来筛选,这里我封装了一个类,来专门处理

这里,我额外处理,日文,韩文,这些长度都是等同于汉字的处理, 具体长度计算 我们只需要调用 GetTextSize 方法
大家也可以自行扩展,根据实际项目中的字体去更改大小比例,有的项目中 英文和汉字的比例是 1:1.5, 我本人的项目字体目前是1:2 所以
文本中汉字的实际大小 = 字符串包含汉字的数量x2

using System.Text.RegularExpressions;public class LanguageCounter
{// 统计字符串中的中文字符个数public static int CountChinese( string input ){return Regex.Matches( input, @"[\u4e00-\u9fff]" ).Count;}// 统计字符串中的英文字符个数public static int CountEnglish( string input ){return Regex.Matches( input, @"[a-zA-Z]" ).Count;}// 统计字符串中的符号个数(包括标点、特殊符号等)public static int CountSymbols( string input ){return Regex.Matches( input, @"[^\u4e00-\u9fff\w\s]" ).Count;}// 统计字符串中的数字个数public static int CountNumbers( string input ){return Regex.Matches( input, @"\d" ).Count;}// 统计字符串中的韩文字符个数public static int CountKorean( string input ){return Regex.Matches( input, @"[\uac00-\ud7af]" ).Count;}// 统计字符串中的日文字符个数public static int CountJapanese( string input ){return Regex.Matches( input, @"[\u3040-\u30ff]" ).Count;}// 空格数量public static int CountSpace( string input ){return Regex.Matches( input, @"\s" ).Count;}/// <summary>/// 获取字符串中 单元大小/// /// 字符/字母/数字 按一个单元算/// 中文汉字,韩文,繁体,日文,片甲 按两个单元算/// /// </summary>/// <param name="text"></param>/// <returns></returns>public static int GetTextSize( string text ){int chineseSize = LanguageCounter.CountChinese( text ) * 2;int japaneseSize = LanguageCounter.CountJapanese( text ) * 2;int koreaneseSize = LanguageCounter.CountKorean( text ) * 2;int englisheseSize = LanguageCounter.CountEnglish( text );int symbolsSize = LanguageCounter.CountSymbols( text );int numberSize = LanguageCounter.CountNumbers( text );int spaceSize = LanguageCounter.CountSpace( text );return spaceSize + chineseSize + englisheseSize + symbolsSize + numberSize + japaneseSize + koreaneseSize;}}

如何解决第二个痛点呢?

我们只需要限定长度,这个长度是实际单元像素长度,而非固定字符串长度去处理就行,尾号加上 就可以完美解决

 public void SetName( string newName ){if ( LanguageCounter.GetTextSize( newName ) > 12 ){//这里,因为你永远也不知道尾部的字符是  汉字,韩语,  特殊符号, 还是字母和数字,所以我们只需要遍历去裁切计算长度就可以了//至于性能,这里不涉及UI,仅仅对数据进行遍历,开销可以忽略不记while ( LanguageCounter.GetTextSize( newName ) > 9 ){newName = newName.Remove( newName.Length - 1 );}newName = newName + "...";}//在最后我们将筛好的字符串赋值给 UI 就大功告成了nameText.text = newName;}

最后,感谢大家阅读,有什么问题,可以通过博客私聊我,或者你有更好的方法也可以在博客下留言,感谢!

http://www.yayakq.cn/news/472109/

相关文章:

  • 做视频网站技术壁垒在哪里企业管理公司取名字大全
  • 订餐网站开发流程dw做网站小技巧
  • 在哪找做网站的抖音广告推广
  • 科技广告公司网站模板河北石家庄地图
  • 做物理的网站彩票走势图网站建设
  • 免费图片素材网站有哪些工程招标信息网下载
  • vue.js合作做网站么做网站设计图用什么软件
  • 怎么做网站反向链接做百度网站的公司哪家好
  • 网站主页设计注意点百度q3财报2022
  • 京东商城网站风格网站建设 沈阳
  • 建站时长是什么原因造成的gif图标网站
  • 手机网站建设+上海新手 网站建设 书籍
  • 网站做淘宝客需要什么网页设计个人主页
  • 如何做公司的网站带搜索的下拉框网站
  • 网站备案 企业 个人手机制作网站的软件有哪些东西
  • 网站建设平台有哪些软广告经典案例
  • 商河县做网站公司大连网络推广网站优化找哪家好
  • 有谁做彩票网站网站开发如何适应各分辨率
  • 模板网站五金建网站的流程和费用
  • 网站排名优化服务公司网站上如何做电子手册
  • 北京网站设计济南兴田德润团队怎么样wordpress asp
  • 做问卷调查的是哪个网站齐河专业企业网站建设
  • aso优化服务站公司的网站怎么做推广
  • 怎么样宣传自己的网站怎么下载1688上的视频
  • 求几个夸克没封的a站2023网站登录页面
  • 加强档案网站建设网站收录查询网
  • 网站性能策划四川建设厅证网站是
  • 没有网站怎么推广坪山做网站公司
  • 同城购物网站怎么做郑州英语网站建设
  • 备案名称和网站名称不一致陇南网站网站建设