js substr支持中文截取函数代码(中文是双字节)
发布时间:2024-04-10 10:44:58
标签:substr,中文截取函数
<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>


猜你喜欢
- 基于pygame的飞机大作战小游戏,适合新手,不能直接运行,只能在命令行进入当前游戏目录,输入python game.py才能够运行,尚不知
- Go语言也称 Golang,兼具效率、性能、安全、健壮等特性。Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验就可以轻松
- 像在下拉菜单中选择省、市这样的操作,我一直用ASP来创建生成列表函数,把它们保存在一个Include文件中,用的时候就加载。这样做确实有个不
- 守来说,AJAX在现在是热得不能再热的技术。没有人能否认,它拥有大批的支持者。在CNN上,它从二月份的一个不被看好的词语到十月份成长成一个初
- 目录项目场景:解决方案:概要描述:详细说明:总结:项目场景:使用FreeSql,包含所有的ORM数据库,都会存在这样的问题。在codefir
- LEN()函数获取字符串的长度。LEN( <字符> )--返回整型SUBSTRING()函数截取字符内指定位置、指定内容的字符。
- 概述最近买了台服务器,准备搭建个人博客,来持续更新自己的博客,环境服务器操作系统:CentOS 7.0博客部署服务器:Apache后台语言:
- type 所有类是type生成的a = 1b = "abc"print("type a:{}&qu
- 1. 介绍torch.norm()是对输入的tensor求对应的范数。tensor的范数有以下三种:1.1 p-范数1.2 Frobeniu
- CSS Modules:局部作用域 & 模块化CSS Modules 为每一个局部类赋予全局唯一的类名,这样组件样式间就不会相互影响
- seek()方法在偏移设定该文件的当前位置。参数是可选的,默认为0,这意味着绝对的文件定位,它的值如果是1,这意味着寻求相对于当
- 1. 导入库import numpy as np #矩阵运算import matplotlib.pyplot as plt #可视化impo
- 目录1. 常用的编码2.补充:计算机表示的单位:3.ASCII编码2.GBK和GB2312编码4.Unicode5.UTF-8编码6.编码和
- BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中。 语法:BULK INSERT [ [ 'database
- 前言:微信H5项目,ios端出现了软键盘输完隐藏后页面不会回弹,下方会有一大块留白最近微信和ios都有版本升级,不知道是哪边升级造成的,但是
- 这篇文章主要介绍threading模块中的主类Thread的一些主要方法,实例代码如下:''' Crea
- 一.图像几何变换图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适当的几何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身
- ASCII(str) 返回字符串str的第一个字符的ASCII值(str是空串时返回0)mysql> select ASCII(
- 前段时间嗷嗷有发过"好玩的放大镜效果",今天看了下,发现还有简单的方法也能够实现,即利用内外补丁的调整。有兴趣的可以在琢
- 1、如何统计序列中元素的出现频度实际案例:(1)某随机序列[12, 5, 6, 4, 6, 5, 5, 7, ...] 中找到出现次数最高的