当前位置: 首页 > wzjs >正文

打电话给客户怎样介绍自己是做网站的?开场白?百度信息流效果怎么样

打电话给客户怎样介绍自己是做网站的?开场白?,百度信息流效果怎么样,如何做英文网站外链,大流量ip网站怎么做鸿蒙大小写转换开发笔记 前言 最近在搞鸿蒙工具箱,想着加个大小写转换功能。这玩意主要是用来转换各种命名格式,比如把"hello world"转换成"HelloWorld"、“HELLO_WORLD”、"hello-world"等等。本来以为挺简单的,结果发现要处理各种格式,调试了…

鸿蒙大小写转换开发笔记

前言

最近在搞鸿蒙工具箱,想着加个大小写转换功能。这玩意主要是用来转换各种命名格式,比如把"hello world"转换成"HelloWorld"、“HELLO_WORLD”、"hello-world"等等。本来以为挺简单的,结果发现要处理各种格式,调试了好几次才搞定。

写这个工具的时候遇到不少坑,比如分隔符处理、首字母大写、特殊字符等等。不过最后都解决了,现在用起来还挺顺手的。

一、功能说明

1.1 主要功能

  • 支持14种不同的文本格式转换
  • 实时预览转换结果
  • 一键复制结果
  • 收藏功能

1.2 界面功能

  • 文本输入框
  • 格式选择列表
  • 结果显示
  • 复制按钮

二、实现过程

2.1 开发小故事

记得刚开始写这个功能的时候,我直接用了网上找的一个转换函数,结果发现各种问题。比如输入"hello-world"的时候,转换出来是"helloWorld",但是用户说不对,应该是"helloWorld"。后来查了一下,发现不同场景下对分隔符的处理要求不一样,有的要保留,有的要去掉,真是头疼。

还有一次,用户反馈说输入"hello_world"的时候,转换出来是"helloWorld",但是他想看到"HelloWorld"。这个需求让我改了好几次代码,最后加了个判断,首字母要大写。

最搞笑的是处理特殊字符的问题。一开始没处理特殊字符,结果用户输入了"hello@world",转换出来是"hello@world",但是用户说不对,应该把@也当作分隔符。后来赶紧加了个处理,把特殊字符也当作分隔符。

2.2 临时解决方案

  1. 分隔符处理问题

    • 临时方案:直接用正则把分隔符替换成空格,图省事
    • 问题:有时候会把不该替换的分隔符也替换了,结果一堆奇怪的结果
    • 最终方案:老老实实用正则表达式分割输入文本,保留分隔符,虽然麻烦点,但靠谱
  2. 首字母大写问题

    • 临时方案:直接转大写,不管位置,简单粗暴
    • 问题:有时候会把不该大写的字母也大写了,用户不乐意
    • 最终方案:根据格式类型判断是否需要大写,体验好多了
  3. 特殊字符处理

    • 临时方案:直接忽略特殊字符,省事
    • 问题:用户说不对,应该把特殊字符也当作分隔符
    • 最终方案:把特殊字符也当作分隔符处理,虽然麻烦点,但用户满意
  4. 格式选择问题

    • 临时方案:用下拉框选择格式,简单
    • 问题:用户说不好用,要一个个试,太麻烦了
    • 最终方案:用Radio组件实现格式选择,方便切换,用户体验好多了

2.3 调试案例

  1. 转换实现
private convertCase(text: string, type: CaseType): string {const words = text.trim().split(/[\s-_./]+/)switch (type) {case CaseType.LOWER:return text.toLowerCase()case CaseType.UPPER:return text.toUpperCase()case CaseType.CAMEL:return words.map((word, index) => index === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join('')case CaseType.CAPITAL:return words.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ')case CaseType.CONSTANT:return words.map(word => word.toUpperCase()).join('_')case CaseType.DOT:return words.map(word => word.toLowerCase()).join('.')case CaseType.HEADER:return words.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join('-')case CaseType.DEFAULT:return words.map(word => word.toLowerCase()).join('-')case CaseType.PARAM:return words.map(word => word.toLowerCase()).join('_')case CaseType.PASCAL:return words.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join('')case CaseType.PATH:return words.map(word => word.toLowerCase()).join('/')case CaseType.SENTENCE:return words.map((word, index) => index === 0 ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() :word.toLowerCase()).join(' ')case CaseType.SNAKE:return words.map(word => word.toLowerCase()).join('_')case CaseType.MOCK:return text.split('').map((char, index) => index % 2 === 0 ? char.toLowerCase() : char.toUpperCase()).join('')default:return text}
}

这个转换函数我真是改了又改。最开始用了个简单的算法,结果发现处理不了特殊字符。后来改成了正则分割,但是处理首字母大写的时候又出问题了。最后改成了现在的算法,虽然代码看起来有点乱,但是能处理各种情况。

  1. 格式选择实现
enum CaseType {LOWER = 'lower',         // 小写式: hello worldUPPER = 'upper',         // 大写式: HELLO WORLDCAMEL = 'camel',         // 驼峰式: helloWorldCAPITAL = 'capital',     // 首大式: Hello WorldCONSTANT = 'constant',   // 常量式: HELLO_WORLDDOT = 'dot',            // 点符式: hello.worldHEADER = 'header',      // 标头式: Hello-WorldDEFAULT = 'default',    // 默认式: hello-worldPARAM = 'param',        // 参数式: hello_worldPASCAL = 'pascal',      // 帕斯卡式: HelloWorldPATH = 'path',          // 路径式: hello/worldSENTENCE = 'sentence',  // 语句式: Hello worldSNAKE = 'snake',        // 蛇形式: hello_worldMOCK = 'mock'          // 模拟式: hElLo WoRlD
}

这个枚举定义也改了好几次。最开始只支持几种格式,后来用户说不够用,就加了好多格式。最搞笑的是"模拟式",就是大小写交替的那种,一开始我还觉得没啥用,结果还真有人用。

三、踩坑记录

3.1 遇到的问题

  1. 分隔符处理问题

    • 问题:用户输入不规范,比如多个分隔符
    • 解决:加了正则分割,自动处理
    • 建议:输入时就限制格式,别给自己找麻烦
  2. 首字母大写问题

    • 问题:首字母大写不规范
    • 解决:根据格式类型判断
    • 建议:其实可以让用户自定义
  3. 特殊字符处理问题

    • 问题:特殊字符处理不规范
    • 解决:把特殊字符也当作分隔符
    • 建议:有空可以加个自定义选项
  4. 格式选择问题

    • 问题:格式选择不方便
    • 解决:用Radio组件实现
    • 建议:可以自定义格式

3.2 优化建议

  1. 功能优化

    • 支持更多格式
    • 加个历史记录
    • 支持批量转换
    • 格式分类、导入导出、管理、分享、备份啥的都能加
  2. 性能优化

    • 优化转换速度
    • 减少内存占用
    • 及时释放资源
    • 多线程、算法优化、结果缓存、异步处理都可以试试
  3. 用户体验

    • 加个使用说明
    • 支持快捷键
    • 动画效果、主题、分享、收藏、导入、备份啥的都能加

四、总结

这个大小写转换工具,基本功能都齐了:

  • 支持14种格式转换
  • 实时预览结果
  • 一键复制结果
  • 收藏常用设置

有些边角问题其实还没完全搞定,不过大部分场景都能用。后面有空再慢慢优化吧。

五、参考资料

  • 鸿蒙应用开发指南

欢迎体验

这个大小写转换工具已经集成到鸿蒙开发者工具箱里了,欢迎下载体验!

鸿蒙开发者工具箱


作者:在人间耕耘
邮箱:1743914721@qq.com
版权声明:本文为原创文章


如果你也遇到类似问题,欢迎留言交流,搞不定咱们一起头疼

http://www.dtcms.com/wzjs/90577.html

相关文章:

  • 云网站制作的流程图百度广告优化
  • 莆田做网站建设windows优化大师有哪些功能
  • 美食介绍网站建设论文大数据分析网站
  • 做数学题的网站有吗百度seo培训班
  • dw做高逼格的网站以图搜图百度识图
  • 公司官网如何被百度收录拼多多关键词优化步骤
  • 东莞vi设计公司排名网站关键词优化公司哪家好
  • 如何设计微商城网站建设石家庄网站建设seo
  • 临沂做商城网站设计千网推软文推广平台
  • 产品营销方案案例范文aso关键词优化工具
  • win7做网站服务器武汉网站竞价推广
  • 政府网站监测和集约化建设平台站外推广渠道有哪些
  • 简单的网站后台管理系统百度招商客服电话
  • 公司取名大全最新版的郑州本地seo顾问
  • vs2010可以做动态网站吗营销推广是什么意思
  • 中国建设银行货币基金网站平台宣传推广方案
  • 河北公司注册网上核名seo是什么公司
  • 网站下面 备案搜索引擎优化seo应用
  • 网站做装修营销型网站的推广方法
  • 以下属于b2c网站的是网络营销的实现方式有哪些
  • 静态html转化wordpress主题上海网站排名seo公司
  • 外国网站手机dns博客seo怎么做
  • 深深圳市建设局网站关键词在线试听免费
  • 如何拥有自己的微信小程序seo怎么做
  • 蓬莱有做网站的吗公众号如何推广引流
  • 做网站什么公司好无屏蔽搜索引擎
  • 企业网站设计模板佛山网站建设公司哪家好
  • wordpress 父分类名称seo搜索引擎优化课后答案
  • 微网站页面杭州seo网站推广
  • 素材网站 国外av手机在线精品