在开发中,可能会遇到动态计算字符串的长度的需求,根据容器宽度和字符串的长度,判断是否需要在字符串后拼接省略号展示。
HTML页面中的字符,中文/英文和字符,所占的宽度不同,一个中文字符的间距 约等同于 两个英文或字符 的宽度,所以在计算字符串展示在页面中的真实宽度时候,需要区分中文/英文和字符。
代码如下图:
* 计算显示的字符串
* @param {string} str 要裁剪的字符串
* @param {number} maxWidth 最大宽度
* @param {number} fontSize 字体大小
* @return {string} 显示的字符串
export
const
fittingString
=
(
str
,
maxWidth
,
fontSize
=
12
)
=>
{
str
=
(
str
||
''
)
.
toString
(
)
;
const
fontWidth
=
fontSize
*
1.2
;
const
maxLen
=
Math
.
floor
(
maxWidth
/
fontWidth
*
2
)
;
let
strLen
=
0
;
for
(
let
i
=
0
;
i
<
str
.
length
;
i
++
)
{
if
(
str
.
charCodeAt
(
i
)
>
0
&&
str
.
charCodeAt
(
i
)
<
128
)
{
strLen
++
;
else
{
strLen
+=
2
;
if
(
strLen
>
maxLen
)
{
return
str
.
substring
(
0
,
i
-
1
)
+
'...'
;
return
str
;
ASCII表如图:
HTML页面中的字符,中文/英文和字符,所占的宽度不同,一个中文字符的间距 约等同于 两个英文或字符 的宽度,所以在计算字符串展示在页面中的真实宽度时候,需要区分中文/英文和字符。在开发中,可能会遇到动态计算字符串的长度的需求,根据容器宽度和字符串的长度,判断是否需要在字符串后拼接省略号展示。
大家好,欢迎观看
JavaScript
教程(十一、
JavaScript
字符串的长度)
一、字符串的长度 length:
描述:
JavaScript
提供了一系列方法,来帮助我们更好的使用字符串
测量
字符串长度
:length属性
描述:length属性返回字符串的长度和字符串的个数
语法:字符串变量名.length
var i = "你好";
var result = i.lengt...
一个汉字是2个字节,一个数字和一个英文是1个字节
export const DataLength = (fData) =&amp;amp;amp;amp;gt; {
var intLength = 0
for (var i = 0; i &amp;amp;amp;amp;lt; fData.length; i++) {
if ((fData.charCodeAt(i) &amp;amp;amp;amp;lt; 0)
varchinieseCount=0;
varbadChar="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
badChar+="abcdefghijklmnopqrstuvwxyz";
badChar+="0123456789";
badChar+=""+" ";//半角与全角空格
bad...
分析:字符串中一个英文字母占一个字节,一个中文汉字占两个字节,中文字符基本是两个字节,英文字符基本是一个字节,其中ASCAIl码为94的符号^也为两个字节(以下结果为普通字符串的近似字节长度,对于表情啥的不适用)
export const calculateStringLength = str => {
if (typeof(str) !== 'string') {
return...
众所周知String对象的length属性能够返回字符串的长度,不管字符是单字节还是双字节,都作为一个长度单位来
计算
。因此要准确的获取字符长度,必须通过手工来写。
下面介绍两种方式:
1、循环遍历字符串,根据字符的编码,来判断当前字符是双字节还是单字节,然后递加字符串的字节数。
String.prototype.lengthSingle = function(str){
var b = 0;
https://www.cnblogs.com/hello321/p/7821400.html
function countLength(str) {
var inputLength = 0;
//给一个变量来记录长度
for (var i = 0; i &lt; str.length; i++) {
var coun...
除了普通的 ASCII 字符,对于 Unicode 字符,每个字符的长度不一定相同,使用 `string.length` 仅能
计算
字符的数量,并不能准确
计算
字符的长度。如果需要
计算
字符的长度,可以使用 `Intl` 对象中的 `Segmenter` 方法,例如:
const str = 'Hello, 世界!';
const segmenter = new Intl.Segmenter('zh', {granularity: 'grapheme'});
const segments = segmenter.segment(str);
console.log(segments.length); // 输出 9
在上面的例子中,`granularity` 参数设置为 `grapheme`,表示以最小的可读字符集合作为分隔符,即可以准确
计算
字符串中的 Unicode 字符长度。
CSDN-Ada助手:
Javascript计算字符串长度
CSDN-Ada助手: