js中计算中文长度方法

JS获取带中文字符的字符串长度 一个JS函数,可以获取你当前输入的字符串的长度,其中中文字符和全角字符是2个长度 立即下载
/**
 * 该方法用于截取字符串,根据字符和汉语的占位符有对应不同的处理
 * 
 * eg: var titleValue = '1112322';
var showValue = oleSubstring(titleValue, 4);
if (titleValue == showValue) {
titleValue = '';
}
 * @param titleValue 被截取的字符串
 * @param splitLength 需要截取的长度
 * @returns 截取后的字符串
 */
function oleSubstring(titleValue, splitLength) {
var str_length = 0;
var showValue = new String();
var titleValueLength = titleValue.length;
for ( var i = 0; i < titleValueLength; i++) {
var charValue = titleValue.charAt(i);
str_length++;
if (escape(charValue).length > 4) {
// 中文字符的长度经编码之后大于4
str_length++;
}
if (str_length > splitLength) {
break;
}
showValue = showValue.concat(charValue);
}
if (str_length > splitLength) {
showValue = showValue.concat("...");
}
return showValue;

}

由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。

[javascript]  view plain  copy
  1. function getRealLen( str ) {  
  2.     return str.replace(/[^\x00-\xff]/g, '__').length; //这个把所有双字节的都给匹配进去了  
  3. }  

附赠另一小则技巧:

有时候为了美观,不影响布局和界面,会以一些文案进行截字,但是中文的宽度和英文的宽度不一样,如果按照英文标准来截中文的,或者按中文标准截英文的,显然会忽长忽短,特别是昵称这类容易既有中文又有英文的东西,同样我们可以用上面的思路

[javascript]  view plain  copy
  1. function beautySub( str, len) {  
  2.        var reg = /[\u4e00-\u9fa5]/g,    //专业匹配中文  
  3.            slice = str.substring(0,len),  
  4.            realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );  
  5.            return slice.substring(0, realen ? realen : 1);  
  6. }  

这里我们认为一个中文字符是两个英文字符的宽度,如果你是完美主义者,应该想到j和w,m的宽度是不一样的,w和m以及大写的部分字母和中文的宽度是一致的,这个函数的正则还有相当大的改进空间,同时也可以指定截字的起始位置。


function beautySub( str, len) {  
    var reg = /[\u4e00-\u9fa5]/g,    //专业匹配中文  
        slice = str.substring(0,len),  
        /**其实是一种利用符号进行的类型转换,转换成数字类型
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0

~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1

整数的操作
JavaScript中是没有整型概念的,但利用好位操作符可以轻松处理,同时获得效率上的提升。


|0和~~是很好的一个例子,使用这两者可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快。在处理像素及动画位移等效果的时候会很有用。性能比较见此。


var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3
顺便说句,!!将一个值方便快速转化为布尔值 !!window===true 。
        */
        realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );  
        return slice.substring(0, realen ? realen : 1);  
}  


JS获取字符串实际长度(包含汉字)的简单方法 下面小编就为大家带来一篇JS获取字符串实际长度(包含汉字)的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

相关推荐

龙迅LT9611UXC芯片简介:Dual-Port MIPI DSI/CSI to HDMI2.0 with Audio

龙迅半导体推出的LT9611UXC是一款高性能MIPI转HDMI2.0转换器,支持DSI/CSI接口转换,兼容多种视频格式(RGB/YCbCr),最高支持4K@60Hz输出。该芯片集成音频处理(I2S/SPDIF)、色彩空间转换和3D功能,适用于机顶盒、电视盒子等消费电子及车载设备。提供工业级(-40℃~+85℃)和车规级(AEC-Q100认证)版本,采用QFN64封装。

MB16698594834的博客 1335

Js 计算汉字的长度

// 汉字算做两个 var newvalue = value.replace(/[^\x00-\xff]/g, "** "); var length = newvalue.length;   // 过滤回车 var newText = text.replace(new RegExp(String.fromCharCode(13), 'gm'), "")       newText =

三丰的专栏 1847

数据科学常见模型总结(二)-倾向性得分匹配模型

PSM的核心思想是从未受干预的用户群体中,找到和干预对象一模一样的用户,这样就可以把因果效应归因到干预上。

wudelong0112的专栏 4896

较真:js判断中文字符串长度的正确方法

对于使用javascript编程的人来说,判断字符串长度应该是常用又简单的操作,但在判断包含有中文字符或其他非asci字符的字符串长度时,却有些坑在里面。

一名高级工程师的博客 2530

大语言模型在建筑规范自动化合规审查中的微调策略与规模效应实践

大语言模型(LLM)通过在海量文本数据上预训练,具备了强大的语言理解和生成能力。其核心原理是基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。在工程实践中,为了将这种通用能力适配到建筑、法律、金融等高度专业化的垂直领域,通常需要采用领域微调技术。微调通过使用特定领域的高质量指令数据对模型参数进行更新,使其掌握专业术语、逻辑规则和任务范式,从而解决通用模型在专业场景下知识匮乏和“幻觉”问题。结合检索增强生成(RAG)技术,将动态外部知识库作为模型的“参考手册”,能进一步提升事实准确性并降低幻

weixin_30667831的博客 367

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

TFN_yzgd的博客 929

JavaScript计算字符串长度(含中文)

项目需求变更中有一个要求,就是在mini-textbox中,输入的中文不能超过15个汉字,字符不可以超过30个。我用了miniUI自带的vtype属性,但是不好使,最后使用了一段JS代码进行了校验,代码实现如下://计算字符串长度包含中文 function getByteLen(val) { var len = 0; for (var i = 0; i < val.

墨笙弘一 1万+

Langfuse实战:从评估打分到问题解决的完整指南

本文详细介绍了如何利用开源LLM工程平台Langfuse对AI应用进行系统性评估与优化。从创建评估数据集、设计自动化评分函数,到深入排查常见问题并关联Trace进行精准打分,提供了完整的实战指南。最后,探讨了如何利用评估结果驱动提示词迭代与A/B测试,并给出了生产环境部署与性能优化的关键考量,帮助开发者构建可测量、可分析、可改进的LLM应用。

backprop5master的博客 651

js中计算中文长度方法(转)

由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。 1 2 3 function getRealLen( str ) { return str.replace(/[^\x00-\xff]/g, '__').l

只要开心就好 1万+

为什么我的OpenClaw安装后无法启动?Gateway服务故障排查全攻略

OpenClaw是一款功能强大的自动化工具,但其安装和运行依赖于多个服务组件,其中Gateway服务是核心组件之一。如果Gateway服务无法启动,整个OpenClaw系统将无法正常运行。本文将详细介绍OpenClaw安装后无法启动的常见原因及故障排查方法,帮助你快速定位并解决问题。

一键难忘的博客 4632

在Simulink中构建永磁同步电机的网络化控制模型,并分析通信网络对系统性能的影响

核心优势通过仿真验证了网络延迟和丢包对PMSM控制性能的影响。提供了改进PI参数或引入自适应控制的解决方案。扩展方向抗干扰控制:结合卡尔曼滤波或滑模控制抑制网络噪声。时间敏感网络(TSN)建模:参考知识库[2]的中断触发方式,实现确定性通信。网络安全仿真:模拟恶意攻击(如数据篡改)对控制系统的威胁。

xiaoheshang_123的博客 169

php判断中文字符长度,JavaScript_JS判断字符串长度的5个方法(区分中文和英文),目的:计算字符串长度(英文占 - phpStudy...

JS判断字符串长度的5个方法(区分中文和英文)目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)方法一:String.prototype.gblen = function() {var len = 0;for (var i=0; iif (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {len += 2;} else {len +...

weixin_29216957的博客 244

为分析表明卡诺电池技术(或热泵式储电技术)-是目前最佳的储能技术!!!-2021年

卡诺电池(Carnot Battery)是一种基于热力学循环的储能技术,其核心原理是通过热力循环将电能转化为热能存储,并在需要时将热能重新转换为电能输出。这种技术得名于热力学中的卡诺循环原理,由法国工程师卡诺于1824年提出。

qq_15963745的博客 657

Express 中用 readFile 读取 JSON 用户数据:从接口实现到工程化避坑指南

在 Node.js 后端开发中,文件系统操作是一项基础能力,fs.readFile 负责异步读取文件内容的整个生命周期。当它与 Express 搭配时,能够快速将独立的 JSON 文件作为接口数据源,避免初次学习时直接引入数据库的高成本。通过 fs.promises.readFile 配合 async/await,开发者可以用更线性的方式编写接口,服务重启后数据依然保留,适合接口原型、内网工具、配置型数据读取以及 mock 服务等低并发场景。从具体实践来看,基于 JSON 文件做用户查询,需要关注路径解析、

weixin_34396902的博客 445

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

php 判断中文长度,JavaScript

JS验证中文长度在js里,一个中文字符的length是1,但是提交到数据库中,就占了两个字节,验证误差,直接抛异常。如果一个字段在oracle里是varchar2(64),如果录入33个汉字,用length的话是33,但是到oracle里就是66个字节了,插入操作肯定出错。我们可以定义一个新的函数getBytes()取得字符串的字节数,在java里,这个函数是标准函数。String.prototy...

weixin_33219863的博客 408

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JS判断字符串长度的5个方法,并且区分中文和英文

目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() {     var len = 0;     for (var i=0; i     if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {          len += 2;     

m0_37176232的博客 1066

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JAVASCRIPT 验证计算中英文混合字符串长度的解决

方法一:采用escape函数 折叠展开javascript代码复制内容到剪贴板 functioncnLength(Str){ varescStr=escape(Str); varnumI=0; varescStrlen=escStr.length; for(i=0;i<escStr...

weixin_30920513的博客 186

汉字/英文字符长度判断--JS版与Java方法版

JS方法: Js代码 <scriptlanguage=javascript> String.prototype.lenB=function(){returnthis.replace(/[^\x00-\xff]/g,"**").length;} varstr="这是一个可以将汉字计算成两个字节...

weixin_30377461的博客 121

javascript 判断中文字符长度的函数代码

JS的字符串都是string对象,可以用string对象的length属性可以获取其长度,但是无论是中文、全角符号以及英文最小长度单位都是1,这与php的strlen()并不相同。 代码如下: function strlen(str) { var s = 0; for(var i = 0; i if(str.charAt(i).match(/[u0391-uFFE5]/)) {

smshuxue的专栏 1012

JS判断字符串长度的几种方法(区分中文和英文)

目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) String.prototype.gblen = function() { var len = 0; for (var i=0; i<this.length; i++) { if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) { ...

aliven1的博客 2267

javascript如何获取中英文字符串的长度

网站地图:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768...

weixin_30699235的博客 76

js 计算字符串长度(含中文)

 //计算字符串长度(含中文)  String.prototype.len = function() {         return this.replace(/[^/x00-/xff]/g,"**").length;   } 

zgmzyr的专栏 903

js求字符串字节长度方法封装

字符串字节长度一、求字符串字节 一、求字符串字节 var str = 'jg78*笑笑';//只有中文的Unicode编码大于255 function getByteLength(str){ var count = 0; for(var i = 0;i < str.length;i ++){ if(str.charCodeAt(i) > 255){//charCodeAt返回参数Unicode编码 count +=2;//中文为2Byte }else{ count ++;

xun__xing的博客 1275

JS判断字符串长度(英文占1个字符,中文汉字占2个字符)

别的不知是否可用,反正第一个肯定可以用 //计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: [javascript] view plaincopy在CODE上查看代码片派生到我的代码片 String.prototype.gblen = function() { var len = 0; for (var i=0; i<this.length;

有 prepare , No out 1453

js准确计算字符串长度

//js准确计算字符串长度//function calculate_byte( sTargetStr ) {        var sTmpStr, sTmpChar;        var nOriginLen = 0;        var nStrLength = 0;                 sTmpStr = new String(sTargetStr);        nOri

itzhiren的专栏 1649
上一篇: JQuery中2个等号与3个等号的区别
下一篇: 下拉菜单连动效果的一种用法
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值