Dart/Flutter课程代码字符串转换:自动插入空格适配API格式要求
Dart/Flutter 课程代码自动插入空格实现方案
实现思路
通过正则表达式匹配输入字符串的字母前缀(3-4位)和数字后缀的分界点,自动在中间插入空格,同时兼容用户已输入空格的场景。
核心代码
String formatCourseCode(String rawInput) { // 先清空输入中所有已有的空格,避免重复插入 final cleanedStr = rawInput.replaceAll(RegExp(r'\s+'), ''); // 正则匹配规则:开头3-4位字母,后续全为数字 final courseCodeReg = RegExp(r'^([A-Za-z]{3,4})(\d+)$'); final matched = courseCodeReg.firstMatch(cleanedStr); if (matched != null) { // 匹配成功时,在字母和数字中间插入空格 return '${matched.group(1)} ${matched.group(2)}'; // 如果需要统一转为大写,改为下方写法: // return '${matched.group(1)?.toUpperCase()} ${matched.group(2)}'; } // 匹配失败(格式不符合规则)时,可按业务需求返回原输入/抛出异常/返回提示 return rawInput; }
测试效果
- 输入
MCTE2333,输出MCTE 2333 - 输入
CCUB3621,输出CCUB 3621 - 输入
BTE1021,输出BTE 1021 - 输入
mcte2333,默认输出mcte 2333,加转大写逻辑后输出MCTE 2333 - 输入已经带空格的
MCTE 2333,输出仍为MCTE 2333,不会重复插入空格
拓展说明
如果需要对用户输入做合法性校验,可在正则匹配失败时返回错误提示,引导用户输入符合规则的课程代码。
内容的提问来源于stack exchange,提问作者iqfareez
相关产品推荐
相关产品推荐

