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实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

使用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编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学