flutter 输入时插入分隔符
每四位插入一个分隔符import 'package:flutter/services.dart';class DividerInputFormatter extends TextInputFormatter {final int rear; //第一个分割位数,后面分割位,,数final String pattern; //分割符DividerInputFormatter({this.rear = 4, this.pattern = ' '});@overrideTextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {//不含分隔符的文本String allTextPure = newValue.text.replaceAll(RegExp(pattern), '');//处理后含分隔符的文本String allTextDeal = '';//光标位置int cursorPosition = newValue.selection.baseOffset;for (int i = 0; i < allTextPure.length; i++) {if ((i > 0 && (i) % rear == 0) && allTextPure[i] != pattern) {allTextDeal = '$allTextDeal$pattern';}allTextDeal += allTextPure[i];}///光标在文字最右侧(尾部)的情况,光标始终在最后if (cursorPosition >= newValue.text.length) {return TextEditingValue(text: allTextDeal,selection: TextSelection.collapsed(offset: allTextDeal.length),);}///光标不在文字尾部的情况//如果原光标位置变为分割符,则说明左侧增加一位,光标也加一位if (allTextDeal.substring(cursorPosition - 1, cursorPosition) == pattern) {cursorPosition++;}return TextEditingValue(text: allTextDeal,selection: TextSelection.collapsed(offset: cursorPosition),);}
}
手机号规则分隔符
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MaterialApp(home: DividerFormatterPage()));
class DividerFormatterPage extends StatelessWidget {
const DividerFormatterPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => Scaffold(body: _buildBody());
_buildBody() {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 100),
child: TextField(
inputFormatters: [
DividerInputFormatter(pattern: '-'),
FilteringTextInputFormatter.allow(RegExp(r'[0-9\s\-]')),
LengthLimitingTextInputFormatter(13),
],
),
);
}
}
class DividerInputFormatter extends TextInputFormatter {
final int first, rear; //第一个分割位数,后面分割位,,数
final String pattern; //分割符
DividerInputFormatter({this.first = 3, this.rear = 4, this.pattern = ' '});
@override
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
//不含分隔符的文本
String allTextPure = newValue.text.replaceAll(RegExp(pattern), '');
//处理后含分隔符的文本
String allTextDeal = '';
//光标位置
int cursorPosition = newValue.selection.baseOffset;
for (int i = 0; i < allTextPure.length; i++) {
if ((i == first || (i - first) % rear == 0) && allTextPure[i] != pattern) {
allTextDeal = '$allTextDeal$pattern';
}
allTextDeal += allTextPure[i];
}
///光标在文字最右侧(尾部)的情况,光标始终在最后
if (cursorPosition >= newValue.text.length) {
return TextEditingValue(
text: allTextDeal,
selection: TextSelection.collapsed(offset: allTextDeal.length),
);
}
///光标不在文字尾部的情况
//如果原光标位置变为分割符,则说明左侧增加一位,光标也加一位
if (allTextDeal.substring(cursorPosition - 1, cursorPosition) == pattern) {
cursorPosition++;
}
return TextEditingValue(
text: allTextDeal,
selection: TextSelection.collapsed(offset: cursorPosition),
);
}
}
相关文章:
flutter 输入时插入分隔符
每四位插入一个分隔符import package:flutter/services.dart;class DividerInputFormatter extends TextInputFormatter {final int rear; //第一个分割位数,后面分割位,,数final String pattern; //分割符DividerInputFormatter({this.rear 4, this.pattern });overrideTex…...
静态版通讯录——“C”
各位CSDN的uu你们好呀,之前小雅兰学过了一些结构体、枚举、联合的知识,现在,小雅兰把这些知识实践一下,那么,就让我们进入通讯录的世界吧 实现一个通讯录: 可以存放100个人的信息每个人的信息:名…...
前端基础开发环境搭建工具等
一、基本开发环境(软件)安装1、Vscode(代码编辑器)官网下载网址:https://code.visualstudio.com/2、nvm(node多版本管理器,每个node版本都有对应的npm版本)安装包下载地址࿱…...
华为OD机试题【IPv4 地址转换成整数】用 Java 解 | 含解题说明
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:IPv4 地址转换成整数 题目 存在…...
[数据结构]排序算法
目录 常用排序算法的实现:: 1.排序的概念及其运用 2.插入排序 3.希尔排序 4.选择排序 5.冒泡排序 6.堆排序 7.快速排序 8.归并排序 9.排序算法复杂度及稳定性分析 10.排序选择题练习 常用排序算法的实现:: 1.排序的概念及其运用…...
不愧是2023年就业最难的一年,还好有车企顶着~
就业龙卷风已经来临,以前都说找不到好的工作就去送外卖,但如今外卖骑手行业都已经接近饱和状态了,而且骑手们的学历也不低,本科学历都快达到了30%了,今年可以说是最难找到工作的一年。 像Android 开发行业原本就属于在…...
C/C++之while(do-while)详细讲解
目录 while循环有两个重要组成部分: while 是一个预测试循环 无限循环 do-while 循环 while循环有两个重要组成部分: 进行 true 值或 false 值判断的表达式;只要表达式为 true 就重复执行的语句或块;图 1 显示了 while 循环的…...
SpringCloud学习笔记(一)认识微服务
一、微服务技术栈 二、单体架构和分布式架构的区别 1、单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包进行部署 优点:架构简单,部署成本低缺点:耦合度高 2、分布式架构: 根据业务功能对系统…...
Unity中使用WebSocket (ws://)的方法
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 WebSocket与http 其…...
米哈游春招算法岗-2023.03.19-第一题-交换字符-简单题
交换字符Problem Description 米小游拿到了一个仅由小写字母组成的字符串,她准备进行恰好一次操作:交换两个相邻字母,在操作结束后使得字符串的字典序尽可能大。 请你输出最终生成的字符串。 input 一个仅由小写字母组成的字符串,…...
能把爬虫讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】
前言 可以说很多人学编程,不玩点爬虫确实少了很多意思,不管是业余、接私活还是职业爬虫,爬虫世界确实挺精彩的。 今天来给大家浅谈一下爬虫,目的是让准备学爬虫或者刚开始起步的小伙伴们,对爬虫有一个更深更全的认知…...
springcloud学习总结
springcloud 构建微服务项目步骤 导入依赖编写配置文件开启这个功能 Enablexxx配置类 于2023年2月24日下午17点38分开始学习于2023年3月17日晚上20点26分学完总结代码地址:https://gitee.com/liang-weihao/StudySpringcloud学习笔记地址:https://www.…...
2022年亏损超10亿,告别野蛮成长的众安在线急需新“引擎”
2023年3月21日,众安在线披露了2022年财报,营收233.52亿元,同比增长6.44%;净亏损16.33亿元,去年同期净利润为11.6亿元,同比由盈转亏。 尽管众安在线再次身陷亏损的泥潭,但投资者却没有选择逃离。…...
ChatGPT文心一言逻辑大比拼(一)
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
【机器学习面试总结】————特征工程
【机器学习面试总结】————特征工程一、特征归一化为什么需要对数值类型的特征做归一化?二、类别型特征在对数据进行预处理时,应该怎样处理类别型特征?三、高维组合特征的处理什么是组合特征?如何处理高维组合特征?四、组合特征怎样有效地找到组合特征?五、文本表示模型…...
如何将字符串反转?
参考答案 使用 StringBuilder 或 StringBuffer 的 reverse 方法,本质都调用了它们的父类 AbstractStringBuilder 的 reverse 方法实现。(JDK1.8)不考虑字符串中的字符是否是 Unicode 编码,自己实现。递归1. public AbstractStrin…...
Linux内核IO基础知识与概念
什么是 IO在计算机操作系统中,所谓的I/O就是 输入(Input)和输出(Output),也可以理解为读(Read)和写(Write),针对不同的对象,I/O模式可以划分为磁盘…...
paper文献和科研小工具
一、好用的网站 Aminer 二、好用的工具 1. SciSpace SciSpace官网 【ChatGPT 论文阅读神器】SciSpace 用户注册与实战测试 SciSpace是一款基于 ChatGPT 的论文阅读神器。 2. ReadPaper 强大且超实用的论文阅读工具——ReadPaper ReadPaper官网 ReadPaper下载链接 Rea…...
dfs和bfs能解决的问题
一.理解暴力穷举之dfs和bfs暴力穷举暴力穷举是在解决问题中最常用的手段,而dfs和bfs算法则是这个手段的两个非常重要的工具。其实,最简单的穷举法是直接遍历,如数列求和,遍历一个数组即可求得所问答案,这与我在前两篇博…...
静态通讯录,适合初学者的手把手一条龙讲解
数据结构的顺序表和链表是一个比较困难的点,初见会让我们觉得有点困难,正巧C语言中有一个类似于顺序表和链表的小程序——通讯录。我们今天就来讲一讲通讯录的实现,也有利于之后顺序表和链表的学习。 目录 0.通讯录的初始化 1.菜单的创建…...
【嵌入式Linux】---- 从零构建:基于PetaLinux与SDK的GPIO驱动开发与系统集成实战
1. 环境准备与工程创建 第一次接触Zynq开发板和嵌入式Linux时,我完全被各种工具链和配置选项搞晕了。后来发现只要按照正确步骤搭建环境,其实并没有想象中那么复杂。这里分享我从零开始构建GPIO驱动开发环境的完整过程。 首先需要准备一台运行Ubuntu 18.…...
OpenClaw定时任务:GLM-4.7-Flash自动生成日报与周报
OpenClaw定时任务:GLM-4.7-Flash自动生成日报与周报 1. 为什么需要自动化日报周报 每周五下午,我的心情总是特别复杂——既期待周末的到来,又头疼要花1-2小时整理本周工作内容。更不用说每天下班前,还要花15分钟写日报。这种重复…...
离散裂隙注浆与COMSOL的应用
离散裂隙注浆 comsol裂隙注浆模拟这件事,搞过岩土工程的都懂——看着像往裂缝里灌水泥,实际操作起来比煮一锅意大利面还容易翻车。COMSOL在这块儿的优势就像给工程师开了透视挂,尤其是处理随机分布的离散裂隙时,能直接把三维地质结…...
AI生成内容检测新思路:除了红绿词表,我们还能用哪些方法识别ChatGPT写的文章?
AI生成内容检测技术全景:超越红绿词表的七种实战方法 当ChatGPT生成的论文摘要通过学术评审、AI撰写的新闻稿被主流媒体刊发时,内容真实性的边界正在变得模糊。某高校教授最近向我展示了一份学生作业——文笔流畅的哲学论述,最终被证实完全由…...
G-Helper:开源硬件控制工具的性能优化实践指南
G-Helper:开源硬件控制工具的性能优化实践指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: http…...
Llama Factory应用场景:快速打造行业专属的智能客服模型
Llama Factory应用场景:快速打造行业专属的智能客服模型 1. 引言:当智能客服遇见“模型工厂” 想象一下这个场景:一家电商公司,每天要处理成千上万的客户咨询。从“这个衣服有货吗”到“我的订单为什么还没发货”,客…...
别再手动录单了!手把手教你用U9C OpenAPI打通钉钉审批流(含完整配置流程)
别再手动录单了!手把手教你用U9C OpenAPI打通钉钉审批流(含完整配置流程) 当财务部的张经理第17次因为手工录入错误被审计部门退回单据时,他摔掉键盘的冲动都有了。这场景在很多企业司空见惯——U9C系统承载着核心业务数据&#…...
OpenClaw飞书机器人:Qwen3-VL:30B多模态应用指南
OpenClaw飞书机器人:Qwen3-VL:30B多模态应用指南 1. 为什么选择OpenClawQwen3-VL:30B组合? 去年冬天,当我第一次尝试用AI助手处理团队飞书群里的图片报销单时,经历了惨痛的失败——要么识别错金额,要么把同事的午餐照…...
5分钟搞定!用DeePseek+PS批量修图(附JSX脚本生成技巧)
5分钟搞定!用DeePseekPS批量修图(附JSX脚本生成技巧) 每次处理上百张产品图时,最头疼的就是重复调整尺寸、统一分辨率这些机械操作?作为电商运营,我经历过无数次深夜加班修图的痛苦,直到发现这个…...
数据库课程设计实战:构建文本分割结果的管理系统
数据库课程设计实战:构建文本分割结果的管理系统 每次做数据库课程设计,你是不是也头疼?选题要么太简单,像学生信息管理,做出来感觉没深度;要么太复杂,比如电商系统,光表关系就画晕…...
