JavaScript截取中英文字符串
有时在显示某段文字的时候,可能会太长,影响我们页面的显示效果。如果仅是英文,那么我们可以用String.substring(start, end)函数就已经够用了。但是通常我们都会遇到既有英文,又有汉字的情况。而汉字是占用2个字节的,如果用String.substring(start, end)截取字符串的话,会发现汉字截取后比英文截取后个数虽然相同,但是长度还是长出去不少(具体要视字符个数来决定)。
下面是一个实现这个功能的函数:
- <script language="javascript" type="text/javascript">
- var str = "欢迎访问简明现代魔法";
- document.write( cutstr(str, 8) );
- //js截取字符串,中英文都能用
- //如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串。
- //字符串,长度
- /**
- * js截取字符串,中英文都能用
- * @param str:需要截取的字符串
- * @param len: 需要截取的长度
- */
- function cutstr(str,len)
- {
- var str_length = 0;
- var str_len = 0;
- str_cut = new String();
- str_len = str.length;
- for(var i = 0; i < str_len; i++)
- {
- a = str.charAt(i);
- str_length++;
- if(escape(a).length > 4)
- {
- //中文字符的长度经编码之后大于4
- str_length++;
- }
- str_cut = str_cut.concat(a);
- if(str_length>=len)
- {
- str_cut = str_cut.concat("...");
- return str_cut;
- }
- }
- //如果给定字符串小于指定长度,则返回源字符串;
- if(str_length < len){
- return str;
- }
- }
- </script>
也可以使用自定义JavaScript原生方法来实现。
- <script language="javascript" type="text/javascript">
- //计算字符串长度
- String.prototype.strLen = function() {
- var len = 0;
- for (var i = 0; i < this.length; i++) {
- if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0) len += 2; else len ++;
- }
- return len;
- }
- //将字符串拆成字符,并存到数组中
- String.prototype.strToChars = function(){
- var chars = new Array();
- for (var i = 0; i < this.length; i++){
- chars[i] = [this.substr(i, 1), this.isCHS(i)];
- }
- String.prototype.charsArray = chars;
- return chars;
- }
- //判断某个字符是否是汉字
- String.prototype.isCHS = function(i){
- if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0)
- return true;
- else
- return false;
- }
- //截取字符串(从start字节到end字节)
- String.prototype.subCHString = function(start, end){
- var len = 0;
- var str = "";
- this.strToChars();
- for (var i = 0; i < this.length; i++) {
- if(this.charsArray[i][1])
- len += 2;
- else
- len++;
- if (end < len)
- return str;
- else if (start < len)
- str += this.charsArray[i][0];
- }
- return str;
- }
- //截取字符串(从start字节截取length个字节)
- String.prototype.subCHStr = function(start, length){
- return this.subCHString(start, start + length);
- }
- var str = "欢迎abc访问简明现代魔法";
- var str1 = str.subCHStr(0, 9);
- //var str2 = str.subCHStr(2, 4);
- //alert(str1 + " == " + str2);
- document.write( str1 );
- </script>
具体使用很简单,跟String.subString(start, end)一样使用就可。比如:
- var str = "欢迎abc访问简明现代魔法";
- var str1 = str.subCHStr(2, 2);
- var str2 = str.subCHString(2, 4);
- alert(str1 + " == " + str2);
JavaScript截取中英文字符串的更多相关文章
- js截取中英文字符串、标点符号无乱码示例解读
<script> function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; ...
- smarty中用truncate来截取中英文字符串及避免中文乱码问题
smarty中用truncate来截取含有中英文的字符串,可能会出现中文乱码问题.字符串截取长度不一问题,下面是新建个扩展函数,或修改原Truncate函数方法也可以的.扩展smarty/plugin ...
- PHP截取中英文字符串
//如果字符串长度超过10,则截取并以省略号结尾 function sub($str){ $str=(string)$str; if( mb_strlen($str,'utf-8') >10){ ...
- javascript截取字符串(支持中英文混合)
javascript截取字符串(支持中英文混合) <script type="text/javascript"> var sub=function(str,n){ va ...
- php截取中文字符串,英文字符串,中英文字符串长度的方法
今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节 ...
- CSS截取中英文混合字符串长度
<!doctype html> <html> <head> <meta http-equiv="content-type" content ...
- javascript截取字符串的最后几个字符
在JavaScript中截取字符串一般是使用内置的substring()方法和substr()方法,这两个方法功能都很强大,也都能实现截取字符串中的最后几个字符. substring()方法 Java ...
- Java 截取中英文混合字符串
题目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入&q ...
- 中英文字符串截取函数msubstr
Thinkphp内置了一个可以媲美smarty的模板引擎,给我们带来了很大的方便.调用函数也一样,可以和smarty一样调用自己需要的函数,而官方也内置了一些常用的函数供大家调用. 比如今天我们说的截 ...
随机推荐
- Selenium(Python)调用pywin32上传图片
import unittestfrom time import sleep import osfrom selenium import webdriverimport win32apiimport w ...
- Unity Shader学习笔记 - 用UV动画实现沙滩上的泡沫
这个泡沫效果来自远古时代的Unity官方海岛Demo, 原效果直接复制3个材质球在js脚本中做UV动画偏移,这里尝试在shader中做动画并且一个pass中完成: // Upgrade NOTE: r ...
- 利用爬虫、SMTP和树莓派3B发送邮件(爬取墨迹天气预报信息)
-----------------------------------------学无止境----------------------------------------- 前言:大家好,欢迎来到誉雪 ...
- CSP201403-2:窗口
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- PHP正则相关
描述字符串排列模式的一种自定义语法规则 如果可以使用字符串函数处理的任务 就不要使用正则 正则表达式 就是通过构建具有特定规则的模式,与输入的字符信息比较 在进行 分割 匹配 查找 替换 等工作 ...
- 关于mysql开元数据库的几个随想
现在已经是凌晨了,昨天晚上写了我人生中的第一篇笔记,觉得没什么可写的,写了一个多小时都没写出什么,现在突然想写点东西了,这是一个比较有趣的问题,前两个月换了新工作,记得当初面试这份工作的时候面试到第三 ...
- Ubuntu16.04安装truffle时的一些错误
1.使用truffle时出现 Error: /usr/bin/env: node: 没有那个文件或目录 1.如果是用sudo apt-get install nodejs命令安装的nodejs, ub ...
- nodejs笔记--mysql篇(四)
测试连接 var mysql = require('mysql'); //调用MySQL模块 //创建一个connection var connection = mysql.createConnect ...
- CP文件覆盖问题
# \cp -r -a aaa/* /bbb[这次是完美的,没有提示按Y.传递了目录属性.没有略过目录]
- Linux GCC编译
.a 静态库(打包文件 由多个.o文件打包而成) .c 未经过预处理的C源码 .h C头文件 .i 经过预处理的C源码(将头文件内容加载到c文件中) .o 编译之后产生的目标文件 .s 生成的汇编语言 ...