介绍
本篇文章为大家展示了怎么在Vue中控制字符和字节的显示个数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
首先需要一个输入框用来输入内容,其次需要一个元素,用来显示输入框中的内容,实现数据的双向绑定。
其中,输入内容的最大长度是可以通过输入标签的属性来指定的。
& lt; div id=癮pp"比; ,& lt; input v模型=皌xt",类=癱lsinp",最大长度=?6“,占位符=扒胧淙肽谌荨?类型=皌ext"比; ,& lt; div 类=癱lsmsg"比; & lt;才能p>内容:& lt; span>{{三}}& lt;/span> & lt;/p> & lt;才能p>输入的字符个数:& lt; span> {{computedCharLen}} & lt;/span> & lt;/p> & lt;才能p>输入的字节个数:& lt; span> {{computedByteLen}} & lt;/span> & lt;/p> ,& lt;/div> & lt;/div>
页面的结构已经搭建完成了,那下面就是做一些简单的样式优化了。
*,{,保证金:0;,填充:,0;,-webkit-box-sizing:, border-box;, box-sizing:, border-box;,} body {,背景:# efefef;,} .clsinp {,宽度:100%;,高度:,40 px;,大纲:,没有,,行高:,40 px;,字体大小:,16 px;,填充:,0,10 px;, margin-top:, 20 px;,颜色:,蓝色,,} .clsmsg {,填充:10 px 10 px;,} .clsmsg span {,颜色:蓝色,,}
最后一步应该就是引入Vue,然后搭建一些简单的数据内容。
var vm =, Vue ({new ,el: & # 39; #应用# 39; ,数据(){ return {才能 ,,,txt: & # 39; & # 39; ,,} }, ,//后期代码在下面补充 })
<>强ASCII范围内与范围外强>
了解ASCII的内容,请移步到http://www.asciima.com/<代码> 代码>。
ASCII中包含256个字符,因此超过256年之外的字符,全部都是非ASCII字符,一般情况下,汉字就是在这个范围中。
因此,编码不在0 - 255的字符可以使用正则表达式<代码>/[^ \ x00 - \ xff]/g> 代码来进行匹配。这个时候就提供了一个思路,如果不是ASCII码中的字符,那么就默认它占了两个字节。
我们修改一下页面结构,输出一些测试信息:
& lt; div id=癮pp"比; ,& lt; input v模型=皌xt",类=癱lsinp",最大长度=?6“,占位符=扒胧淙肽谌荨?类型=皌ext"比; ,& lt; div 类=癱lsmsg"比; & lt;才能p>内容:& lt; span>{{三}}& lt;/span> & lt;/p> & lt;才能p>输入的字符个数:& lt; span> {{computedCharLen}} & lt;/span> & lt;/p> & lt;才能p>输入的字节个数:& lt; span> {{computedByteLen}} & lt;/span> & lt;/p> ,& lt;/div> & lt;/div>
补充需要的计算属性:
计算:,{ ,//获取字符的个数 ,computedCharLen (), { return this.txt.length才能 }, ,//获取字节的个数 ,computedByteLen (), { return 才能;this.txt.replace (/[^ \ x00 - \ xff]/g, & # 39; 01 & # 39;) . length ,} }
这个时候,我们输入内容,出现下面的效果:
这个时候会发现,已经实现,ASCII码范围内的占1位,超出范围的占2位。
<>强控制显示的内容强>
内容显示使用计算属性来实现:
& lt; p>内容:& lt; span> {{computedTxt}} & lt;/span> & lt;/p>
//,控制显示的内容 computedTxt (), { ,return this.methodGetByteLen (this.txt, 10) }
下面补充一下<代码> methodGetByteLen 代码>方法:
/* * ,* str 需要控制的字符串 ,* len 字节的长度,如5个汉字,10个英文,输入参数就是10 ,*/methodGetByteLen (str, len), { ,//如果字节的长度小于控制的长度,那么直接返回 ,if (this.computedByteLen & lt;=, len), { return 才能,str ,} ,for (let 小姐:=,Math.floor(时间/len 2);,小姐:& lt;, str.length;,我+ +),{ if 才能;(str.substr (0, 1) .replace (/[^ \ x00 - \ xff]/g, & # 39; 01 & # 39;) .length 祝辞=,len), { ,,//,Math.floor(时间/小姐;2),*,这里是控制特殊情况的显示//,,,如,& # 39;一二aaa一二三四& # 39;,显示的结果就是,& # 39;一二aaa一……& # 39; ,,return str.substr (0,, Math.floor(时间/小姐;2),*,2),+,& # 39;……& # 39; ,,} ,} }
最终的显示情况没有超过最大指定长度的情况