js数字、字母、符号等半角文本按0.5个字符计算长度

2024-04-16 04:52

本文主要是介绍js数字、字母、符号等半角文本按0.5个字符计算长度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

半角文本按0.5个字符计算

封装 getEffectiveLength 方法

function getEffectiveLength(text) {// 使用正则表达式替换掉所有全角字符,然后获取替换后的字符串长度var halfWidthLength = text.replace(/[^\x00-\xff]/g, "").length;// 原始字符串长度减去半角字符所占据的长度,理论上得到的是全角字符的数量var fullWidthCharsCount = text.length - halfWidthLength;// 将半角字符当作0.5个字符计算,这里假设text全部为半角字符,则实际字符数为halfWidthLength * 0.5var halfWidthCharsAsHalf = halfWidthLength * 0.5;// 合并全角和半角字符的计数var effectiveLength = fullWidthCharsCount + halfWidthCharsAsHalf;return effectiveLength;
}

使用

// 示例:
var input = "Hello你好!";
console.log(getEffectiveLength(input)); // 输出:7.5,即5个半角字符加上2个全角字符

输入框maxlength按半角长度计算

可以自定义一个指令(directive)来动态监控输入内容,并结合上面提供的 getEffectiveLength 函数进行长度校验

首先,创建一个名为 v-effective-length 的自定义指令

Vue.directive('effective-length', {bind(el, binding, vnode) {const maxLength = binding.value;const inputEl = el.querySelector('input');function handleInput() {const value = inputEl.value;const effectiveLength = getEffectiveLength(value);if (effectiveLength > maxLength) {inputEl.value = value.slice(0, -1);vnode.componentInstance.$emit('input', inputEl.value);}}inputEl.addEventListener('input', handleInput);},
});

在使用 el-input 组件时,应用这个自定义指令,并设置期望的最大有效长度

<template><el-input v-model="inputValue" v-effective-length="10"></el-input>
</template>

这篇关于js数字、字母、符号等半角文本按0.5个字符计算长度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907832

相关文章

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O