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实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom