golang 大驼峰转换工具
大驼峰转换工具
法则
基本满足大驼峰命名法则 首字母大写 “_” 忽略后大写
大驼峰到网络标准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实现
- 数据初始化:
// 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...)
}
- 转换大驼峰函数:
/*转换为大驼峰命名法则首字母大写,“_” 忽略后大写
*/
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
}
- 回退函数
/*回退网络模式
*/
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
}
- 测试:
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 大驼峰转换工具相关推荐
- Java驼峰转换工具
1.字段转换 //导入依赖包 <dependency><groupId>com.google.guava</groupId><artifactId>gu ...
- 打开pdf文件提示文件过大_pdf文件太大如何用pdf转换工具进行压缩?
PDF文件如果是由许多高清图片组合而成的,一般来说所占的空间都会比较大,这样的话我们在传输文件的时候时间会很长不太方便.那我们可以将PDF文件进行压缩变小这样可以大大提高我们的工作效率.那PDF文件过 ...
- 3D格式转换工具HOOPS Exchange最全技术指南(三):4大功能特征与典型使用场景
什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持 在主流的 ...
- 3D格式转换工具HOOPS Exchange最全技术指南(二):4大功能特征与典型使用场景
什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持 在主流的 ...
- 3D格式转换工具HOOPS Exchange最全技术指南(四):4大功能特征与典型使用场景
什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持在主流的3 ...
- 助记词转换工具_有助于大流行的10种翻译工具
助记词转换工具 With social distancing to keep us at arm's length from strangers, no traveling, and a scarci ...
- 视频格式转换工具使用
还记得世界杯期间的那个"神奇教练"米卢吗?在给球员讲解战术.观摩对手比赛的时候,他总是喜欢随身携带一个小巧的摄像机.的确,有些摄像机重量很轻,几乎与普通照相机相仿,拍摄.携带和输出 ...
- 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)
1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...
- vb6源码 ymodem_任意字符的ASCII码转换工具,基于VB6的源代码VB字符串处理源码下载...
内容索引:VB源码,字符措置惩罚,ASCII,字符转换 任意字符的ASCII码转换工具,鉴于VB6的源代码,能够把任意字符(数字.字母.汉字)转化成ascii码,也能够把ascii码还原成最初的字符. ...
最新文章
- 量子力学与机器学习相结合,预测高温下的化学反应
- 网络推广下叮咚买菜已完成D轮融资,生鲜电商下一次融资又在何方?
- CMD查询Mysql中文乱码的解决方法
- 玩具租赁到底在解决用户什么痛点?
- 5道不一样的Python基础题练习题,很有难度
- SAP CRM销售订单创建时text determination的调试细节
- python输入十个数输出最大值_python输入十个数如何输出最大值
- python——pandas数据分析(表格处理)工具实现Apriori算法
- 一套完整的 Java 线上故障排查技巧,建议收藏!
- Delphi多层开发方案比较
- 股票涨跌和买卖预测计算公式
- Python 爬虫之初体验(实习僧)
- tfp.distributions.Multinomial().sample()用法简介
- 【电脑】你了解电脑吗?
- 我的世界java版高效率刷怪塔_我的世界超高效率刷怪塔制作教程 砍怪砍到手抽筋...
- RestTemplate和ResponseEntity
- SVM支持向量机个人总结及理解
- ppt模板有哪些网站
- 第3章第9节:快速提取幻灯片中的所有图片素材 [PowerPoint精美幻灯片实战教程]
- 平板触屏笔什么比较好?平板电脑第三方触控笔推荐