大驼峰转换工具

法则
基本满足大驼峰命名法则 首字母大写 “_” 忽略后大写

大驼峰到网络标准json串自动转换

带有特殊字符特殊处理:如下

"ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "LHS", "QPS", "RAM", "RHS", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS"

以下采用golang实现

  1. 数据初始化:
// Copied from golint
var commonInitialisms = []string{"ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "LHS", "QPS", "RAM", "RHS", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS"}
var commonInitialismsReplacer *strings.Replacer
var uncommonInitialismsReplacer *strings.Replacerfunc init() {var commonInitialismsForReplacer []stringvar uncommonInitialismsForReplacer []stringfor _, initialism := range commonInitialisms {commonInitialismsForReplacer = append(commonInitialismsForReplacer, initialism, strings.Title(strings.ToLower(initialism)))uncommonInitialismsForReplacer = append(uncommonInitialismsForReplacer, strings.Title(strings.ToLower(initialism)), initialism)}commonInitialismsReplacer = strings.NewReplacer(commonInitialismsForReplacer...)uncommonInitialismsReplacer = strings.NewReplacer(uncommonInitialismsForReplacer...)
}
  1. 转换大驼峰函数:
/*转换为大驼峰命名法则首字母大写,“_” 忽略后大写
*/
func Marshal(name string) string {if name == "" {return ""}temp := strings.Split(name, "_")var s stringfor _, v := range temp {vv := []rune(v)if len(vv) > 0 {if bool(vv[0] >= 'a' && vv[0] <= 'z') { //首字母大写vv[0] -= 32}s += string(vv)}}s = uncommonInitialismsReplacer.Replace(s)//smap.Set(name, s)return s
}
  1. 回退函数
/*回退网络模式
*/
func UnMarshal(name string) string {const (lower = falseupper = true)if name == "" {return ""}var (value                                    = commonInitialismsReplacer.Replace(name)buf                                      = bytes.NewBufferString("")lastCase, currCase, nextCase, nextNumber bool)for i, v := range value[:len(value)-1] {nextCase = bool(value[i+1] >= 'A' && value[i+1] <= 'Z')nextNumber = bool(value[i+1] >= '0' && value[i+1] <= '9')if i > 0 {if currCase == upper {if lastCase == upper && (nextCase == upper || nextNumber == upper) {buf.WriteRune(v)} else {if value[i-1] != '_' && value[i+1] != '_' {buf.WriteRune('_')}buf.WriteRune(v)}} else {buf.WriteRune(v)if i == len(value)-2 && (nextCase == upper && nextNumber == lower) {buf.WriteRune('_')}}} else {currCase = upperbuf.WriteRune(v)}lastCase = currCasecurrCase = nextCase}buf.WriteByte(value[len(value)-1])s := strings.ToLower(buf.String())return s
}
  1. 测试:
func Test_cache(t *testing.T) {SS := "OauthIDAPI"tmp0 := UnMarshal(SS)fmt.Println(tmp0)tmp1 := Marshal(tmp0)fmt.Println(tmp1)if SS != tmp1 {fmt.Println("false.")}
}

输入:
OauthIDAPI
输出:
oauth_id_api
OauthIDAPI

5:传送门:
github

golang 大驼峰转换工具相关推荐

  1. Java驼峰转换工具

    1.字段转换 //导入依赖包 <dependency><groupId>com.google.guava</groupId><artifactId>gu ...

  2. 打开pdf文件提示文件过大_pdf文件太大如何用pdf转换工具进行压缩?

    PDF文件如果是由许多高清图片组合而成的,一般来说所占的空间都会比较大,这样的话我们在传输文件的时候时间会很长不太方便.那我们可以将PDF文件进行压缩变小这样可以大大提高我们的工作效率.那PDF文件过 ...

  3. 3D格式转换工具HOOPS Exchange最全技术指南(三):4大功能特征与典型使用场景

    什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持 在主流的 ...

  4. 3D格式转换工具HOOPS Exchange最全技术指南(二):4大功能特征与典型使用场景

    什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持 在主流的 ...

  5. 3D格式转换工具HOOPS Exchange最全技术指南(四):4大功能特征与典型使用场景

    什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持在主流的3 ...

  6. 助记词转换工具_有助于大流行的10种翻译工具

    助记词转换工具 With social distancing to keep us at arm's length from strangers, no traveling, and a scarci ...

  7. 视频格式转换工具使用

    还记得世界杯期间的那个"神奇教练"米卢吗?在给球员讲解战术.观摩对手比赛的时候,他总是喜欢随身携带一个小巧的摄像机.的确,有些摄像机重量很轻,几乎与普通照相机相仿,拍摄.携带和输出 ...

  8. 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)

    1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...

  9. vb6源码 ymodem_任意字符的ASCII码转换工具,基于VB6的源代码VB字符串处理源码下载...

    内容索引:VB源码,字符措置惩罚,ASCII,字符转换 任意字符的ASCII码转换工具,鉴于VB6的源代码,能够把任意字符(数字.字母.汉字)转化成ascii码,也能够把ascii码还原成最初的字符. ...

最新文章

  1. 量子力学与机器学习相结合,预测高温下的化学反应
  2. 网络推广下叮咚买菜已完成D轮融资,生鲜电商下一次融资又在何方?
  3. CMD查询Mysql中文乱码的解决方法
  4. 玩具租赁到底在解决用户什么痛点?
  5. 5道不一样的Python基础题练习题,很有难度
  6. SAP CRM销售订单创建时text determination的调试细节
  7. python输入十个数输出最大值_python输入十个数如何输出最大值
  8. python——pandas数据分析(表格处理)工具实现Apriori算法
  9. 一套完整的 Java 线上故障排查技巧,建议收藏!
  10. Delphi多层开发方案比较
  11. 股票涨跌和买卖预测计算公式
  12. Python 爬虫之初体验(实习僧)
  13. tfp.distributions.Multinomial().sample()用法简介
  14. 【电脑】你了解电脑吗?
  15. 我的世界java版高效率刷怪塔_我的世界超高效率刷怪塔制作教程 砍怪砍到手抽筋...
  16. RestTemplate和ResponseEntity
  17. SVM支持向量机个人总结及理解
  18. ppt模板有哪些网站
  19. 第3章第9节:快速提取幻灯片中的所有图片素材 [PowerPoint精美幻灯片实战教程]
  20. 平板触屏笔什么比较好?平板电脑第三方触控笔推荐

热门文章

  1. IOS8最好用技巧:在通知中心添加蜂窝网络
  2. 设计一个年度最佳员工表彰大会的策划书
  3. 乔利斯基三角分解_《视觉SLAM十四讲课后作业》第二讲
  4. 吃鸡游戏计算机配置,畅玩主流游戏吃鸡LOL组装电脑配置清单
  5. 如何爬取新浪财经的财务数据(for json)
  6. ViLT视觉文本多模态
  7. SMSC2021 Day9Day10 部分题解
  8. 计算机课教案评语,认识方向教学课件评语(共3篇)
  9. 【HiveMQ 介绍】
  10. 慕测平台环境配置教程