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

相关文章

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

前端原生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. 随机