很多情况下,我们需要控制长标题的显示字数。在客户端用JavaScript控制显示最大字数后,由于js把任何字符都当作1个长度来处理,由此导致全角和半角字符显示的实际长度不同。
例如我们设置某个文章列表页面所有的文章标题最长显示10个字符。那么如下的题目:
这篇文章是测试标题长度显示的文章
I love my country.I love all of you.
处理后,将分别显示为:
这篇文章是测试标题长
I love my (注意最后还有一个空格)
假设我们是按照中文的宽度来确定10个字符这个标准的,那么当标题是英文等半角字符时,显然太短了。反过来,如果我们按照英文等半角字符来确定显示字符数量标准,那么如果题目是中文的时候,又很容易出现自动换行等我们不希望出现的结果。
本文尝试以一种笨拙的办法处理这个问题。即使用js检查字符串中的每一个字符,如果发现有两个(注意不一定相连)的半角字符,那么就将显示长度标准加1。
1 /**
2 获取最终显示的字符串
3
4 @param str 要显示的完整字符串
5 @param baseLength 全是全角字符情况下的显示长度
6 */
7 function getShowStr(str,baseLength)
8 {
9 return str.substring(0,getShowLength(str,baseLength));
10 }
11 /**
12 计算最终显示长度
13
14 @param str 要显示的完整字符串
15 @param baseLength 全是全角字符情况下的显示长度
16 */
17 function getShowLength(str,baseLength)
18 {
19 var i;
20 var result;
21 var state = false; //这个做一个状态标志,实现每出现2个半角字符,让显示长度加1
22
23 result = baseLength;
24
25 for(i = 0 ;i < str.length;i++)
26 {
27 if(i==baseLength-1)break;
28
29 if((str.charAt(i) >= 'a' && str.charAt(i) <= 'z')
30 ||(str.charAt(i) >= 'A' && str.charAt(i) <= 'Z')
31 ||(str.charAt(i) >= '0' && str.charAt(i) <= '9')
32 ||count(str.charAt(i)))
33 {
34 if(state)
35 {
36 state = false;
37 result ++;
38 }
39 else
40 state = true;
41 }
42 }
43
44 return result;
45 }
46
47 /**
48 判断一个字符是否是如下半角符号
49
50 最笨的就是这里。而且应该不全,我是从键盘上一个一个键按过来的。呵呵
51
52 @param c 要检测的字符
53 */
54 function count(c)
55 {
56 if (c == '`'
57 ||c == '!'
58 ||c == '@'
59 ||c == '#'
60 ||c == '$'
61 ||c == '%'
62 ||c == '^'
63 ||c == '&'
64 ||c == '*'
65 ||c == '('
66 ||c == ')'
67 ||c == '_'
68 ||c == '-'
69 ||c == '+'
70 ||c == '='
71 ||c == '['
72 ||c == '{'
73 ||c == ']'
74 ||c == '}'
75 ||c == '\\'
76 ||c == '|'
77 ||c == ';'
78 ||c == ':'
79 ||c == '"'
80 ||c == '\''
81 ||c == '<'
82 ||c == ','
83 ||c == '>'
84 ||c == '.'
85 ||c == '?'
86 ||c == '/'
87 ||c == ' ')
88 return true;
89 else
90 return false;
91 }
经过如上处理,上面例子中说的两个标题会显示为:
这篇文章是测试标题长
I love my country.I love all
显然效果要比原来的样子好。
局限:应该并不是所有的情况下都是两个半角字符的宽度大约与一个全角字符的宽度相当,所以预想中使用某些字体、字符的时候依然会出现换行问题。另外上面的函数进检测原有字符串中从开始到标准长度个字符处的字符情况,之后的字符不检测,且由于前面的半角字符而使标准加大从而新加入进来的要显示的字符也不再检测范围之内。综上,所以这只是个很粗略的处理。
关于改进:最后一个函数的确太笨了,一大堆的或,而且不一定或的完整。这里应该可以做一些改进吧。程序写法上例如把所有的这些符号写成一个数组然后循环比较这样的就不说了,主要是是否这些东西也可以按照数字和字母的方式来比较之类的。
分享到:
相关推荐
标题中的“显示字数(1).zip”表明这是一个压缩文件,通常使用如WinRAR或7-Zip等工具进行压缩,其目的是为了节省存储空间或便于传输。在Windows操作系统中,ZIP格式是常见的压缩格式,它能包含多个文件或文件夹,并且...
标题“显示字数.zip”和描述中的简短信息暗示了这个压缩包可能包含一个文档,其主要内容可能与计算或显示文本文件中的字数有关。在IT领域,尤其是在文本处理、文档管理和数据分析中,了解如何计算字数是一项基本技能...
总的来说,“限制标题的字数插件 for z-blog”是z-blog用户解决标题过长问题的有效工具。通过合理配置,可以提升博客的视觉效果和用户体验,同时也有助于网站的SEO优化。对于那些经常遇到标题长度困扰的z-blog用户来...
标题中的“字数统计工具(vb制作)”指的是使用Visual Basic(VB)编程语言开发的一款应用程序,该程序的主要功能是快速、准确地计算文本中的字数。VB是一种面向对象的编程语言,由Microsoft公司推出,它允许开发者...
标题中的“计算可以输入字数 用法”指的是在编程或文本处理中,如何确定一个字段或文本框允许用户输入的最大字符数。这通常涉及到字符计数算法,并可能与前端开发(HTML、JavaScript)或后端处理(如Python、Java)...
标题中的“记事本实现由光标处显示行和列以及统计字数等功能”意味着我们正在讨论一个增强版的记事本程序,它不仅具备基本的文本编辑功能,还提供了额外的用户友好特性,如显示当前光标位置的行号和列号,以及文档的...
在ASP(Active Server Pages)开发中,内容分页是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,我们需要将长内容分成多个页面显示。标题提到的"内容分页函数(可以设置分页字数)"正是解决这个问题的一...
在这个例子中,我们创建了一个textarea和一个用于显示字数的`<p>`元素。通过`addEventListener`方法添加了一个事件监听器,每当textarea内容改变时,都会更新字数计数并显示在页面上。 如果要限制最大字数,可以在...
这种功能在显示摘要、标题或者有限空间内的文字信息时特别有用,可以保持页面布局的整洁和美观。 实现这个功能主要涉及到以下几个关键知识点: 1. **jQuery 选择器与 DOM 操作**:首先,我们需要通过 jQuery 选择...
"平时做项目的时候总是会遇到要求限制显示的字数" 这个标题反映了这一常见的业务场景。通常,这样的需求可能出现在新闻摘要、评论展示、列表项内容等各种地方。在这些情况下,前端需要有办法将长文本适当地缩短,只...
X2.5论坛中,标题字数的默认限制是80个字符,这对于某些用户来说可能过于严格,尤其是当他们发布包含大量英文或其他语言内容的帖子时。由于UTF-8编码中,一个汉字占3个字节,所以最多只能显示约26个汉字的标题。...
4. **结果显示**:展示统计结果,可能包括总字数、段落数、平均每个段落的字数等。 5. **用户交互**:提供友好的命令行界面或图形用户界面,方便用户输入文件路径并查看结果。 在压缩包文件"crossoverJie-blog....
在这个项目中,“凑字数凑字数凑字数”可能是作者在创建项目标题时的一种幽默表达,暗示了他可能为了满足某种要求或格式,而不得不增加额外的文字。 【描述】:“本人的作品,去年学院单片机决赛的题目就是拿这个改...
标题“按字数翻页.rar”所描述的是一种网页翻页技术,主要通过JavaScript实现,以字数而非传统的页面数量作为翻页的标准。这种技术在处理大量文本内容时特别有用,比如阅读器、在线文档查看器或者论坛等,它允许用户...
然而,系统默认的`Label`控件往往不具备自动换行的功能,这在处理长文本时可能会造成显示问题。为了克服这一限制,开发者们会编写自定义的程序来实现`Label`的文字自动换行功能。下面我们将详细讨论如何实现这一功能...
【标题】"JQUERA限制字数"实际上指的是在网页设计中使用jQuery库来实现对文本显示的字符数限制功能。jQuery是一个强大的JavaScript库,它简化了JavaScript编程,提供了丰富的DOM操作、事件处理和动画效果等功能。在...
在08cms系统中,后台字数限制是一个常见的自定义需求,尤其是在文章标题显示上。默认情况下,08cms对标题的显示长度可能有限制,但有时候用户可能希望显示更长的标题,以提高内容的可读性和吸引力。在给定的文件信息...
标题"一个基于Django的字数统计网站"表明这是一个使用Python的Django框架构建的Web应用程序,其主要功能是实现文本的字数统计。Django是一个强大的、免费的开源Web框架,它遵循模型-模板-视图(Model-Template-View...
【标题】:D3D9(Direct3D 9)技术详解 【描述】:D3D9,全称为Direct3D 9,是微软在Windows平台上开发的一种图形应用程序接口(API),主要用于处理复杂的3D图形渲染。它属于DirectX的一部分,是游戏开发和图形...
- 对于学术写作或出版工作,确保了解你的目标要求,因为不同的机构可能对字数限制有不同规定,包括是否计算标题、脚注、尾注等部分的字数。 总之,通过Pages提供的字数统计功能,Macbook用户可以轻松地跟踪和管理...