js substr支持中文截取函数代码(中文是双字节)
时间:2024-04-10 10:44:58
<script language="JavaScript">
//得到字符总数
function getChars(str) {
var i = 0;
var c = 0.0;
var unicode = 0;
var len = 0;
if (str == null || str == "") {
return 0;
}
len = str.length;
for(i = 0; i < len; i++) {
unicode = str.charCodeAt(i);
if (unicode < 127) { //判断是单字符还是双字符
c += 1;
} else { //chinese
c += 2;
}
}
return c;
}
function sb_strlen(str) {
return getChars(str);
}
//截取字符
function sb_substr(str, startp, endp) {
var i=0; c = 0; unicode=0; rstr = '';
var len = str.length;
var sblen = sb_strlen(str);
if (startp < 0) {
startp = sblen + startp;
}
if (endp < 1) {
endp = sblen + endp;// - ((str.charCodeAt(len-1) < 127) ? 1 : 2);
}
// 寻找起点
for(i = 0; i < len; i++) {
if (c >= startp) {
break;
}
var unicode = str.charCodeAt(i);
if (unicode < 127) {
c += 1;
} else {
c += 2;
}
}
// 开始取
for(i = i; i < len; i++) {
var unicode = str.charCodeAt(i);
if (unicode < 127) {
c += 1;
} else {
c += 2;
}
rstr += str.charAt(i);
if (c >= endp) {
break;
}
}
return rstr;
}
//调用示例:
function getShortFileName(filename) {
short_filename = filename;
if (sb_strlen(short_filename) > 61) {
short_filename = sb_substr(short_filename, 0, 36) + ' ... ' + sb_substr(short_filename, -20);
}
return short_filename;
}
var chara = 'ni你2好1啊!'
js_self = chara.substr(4);
test = sb_substr(chara,4);
alert("js_self:"+js_self+"ext:"+test);
</script>
function mb_strlen(str) {
var len = 0;
for(var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1;
}
return len;
}
<html><script type="text/javascript">function CutStrLength(str,Ilength){var tmp=0;var len=0;var okLen=0for(var i=0;i<Ilength;i++){if(str.charCodeAt(i)>255)tmp+=2elselen+=1okLen+=1if(tmp+len==Ilength){return (str.substring(0,okLen));break;}if(tmp+len>Ilength){return (str.substring(0,okLen-1)+"");break;}}}function checkFieldLength(fieldName,fieldDesc,fieldLength){var str=document.getElementById(fieldName).value;var theLen=0;var teststr='';for(i=0;i<str.length;i++){teststr=str.charAt(i);if(str.charCodeAt(i)>255)theLen=theLen+2;elsetheLen=theLen+1;}document.getElementById('showMsg').innerText=theLen;if(theLen>fieldLength){document.getElementById('showMsg').innerText=fieldDesc;//alert(fieldDesc+" 的字段长度超过规定长度!");//document.getElementById(fieldName).focus();document.getElementById(fieldName).value=CutStrLength(str,fieldLength);return false;}else{return true;}}//--></script></head><body><form method="POST" action=""><textarea id="testArea" name="testArea" rows="3" cols="22" onkeyup="checkFieldLength('testArea', '超过允许输入的字符个数', 20);"onchange="checkFieldLength('testArea', '超过允许输入的字符个数', 20);"></textarea><div id="testInfo">已经输入:</div></form></body></html>
标签:substr,中文截取函数
0
投稿
猜你喜欢
GOLang IO接口与工具使用方法讲解
2024-04-30 10:05:15
Python使用pymysql模块操作mysql增删改查实例分析
2024-01-24 03:56:48
JS设计模式之责任链模式实例详解
2023-03-17 08:23:42
Python 制作自动化翻译工具
2022-08-17 05:34:50
手把手教你实现Python连接数据库并快速取数的工具
2024-01-27 12:28:09
windows下wxPython开发环境安装与配置方法
2021-10-22 07:51:01
写入cookie的JavaScript代码库 cookieLibrary.js
2024-04-16 10:41:08
python pandas中对Series数据进行轴向连接的实例
2022-08-07 11:52:21
django DRF图片路径问题的解决方法
2023-02-05 15:25:46
Go 代码生成工具详解
2023-06-18 21:11:48
golang copy函数使用的坑
2023-07-09 19:53:44
Python 中的异步 for 循环示例详解
2021-07-09 10:27:30
Python中zip函数如何使用
2021-03-30 02:54:13
pycharm中没有找到database的解决方案
2021-12-02 16:26:45
vue阻止页面回退的实现方法(浏览器适用)
2024-06-07 15:24:10
java往php传数据操作方法
2023-10-27 17:51:48
SQL Server游标的使用/关闭/释放/优化小结
2024-01-21 15:37:36
python函数的两种嵌套方法使用
2022-01-14 08:06:58
在python中实现调用可执行文件.exe的3种方法
2022-08-10 06:40:42
SQL Server 2019下载与安装教程(自定义安装)
2024-01-25 07:15:47