驼峰与下划线之间的转换
驼峰与下划线之间的转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | /** * */ package com; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @author xp test5.java 2018年12月27日 */ public class test5 { public static void main(String[] args) { //underscoreName("abcAbcaBc"); //camelName("abc_abca_bc"); //upcaseCamelName("abc_abca_bc"); Map<String, Object> data= new HashMap<String, Object>(); data.put( "Abc_Abca_Bc_TEXT" , "" ); camelMap(data); //underscopeMap(data); } //驼峰转大写+下划线,abcAbcaBc->ABC_ABCA_BC public static String underscoreName(String name) { StringBuilder result = new StringBuilder(); if ((name != null ) && (name.length() > 0 )) { result.append(name.substring( 0 , 1 ).toUpperCase()); for ( int i = 1 ; i < name.length(); i++) { String s = name.substring(i, i + 1 ); if ((s.equals(s.toUpperCase())) && (!Character.isDigit(s.charAt( 0 )))) { result.append( "_" ); } result.append(s.toUpperCase()); } } System.err.println( "underscoreName:" +result.toString()); return result.toString(); } //下划线转驼峰,abc_abca_bc->abcAbcaBc public static String camelName(String name) { StringBuilder result = new StringBuilder(); if ((name == null ) || (name.isEmpty())) { return "" ; } if (!name.contains( "_" )) { return name.toLowerCase(); } String[] camels = name.split( "_" ); for (String camel : camels) { if (!camel.isEmpty()) { if (result.length() == 0 ) { result.append(camel.toLowerCase()); } else { result.append(camel.substring( 0 , 1 ).toUpperCase()); result.append(camel.substring( 1 ).toLowerCase()); } } } System.err.println( "camelName:" +result.toString()); return result.toString(); } //下划线转首字母大写驼峰,abc_abca_bc->AbcAbcaBc public static String upcaseCamelName(String name) { StringBuilder result = new StringBuilder(); if ((name == null ) || (name.isEmpty())) { return "" ; } if (!name.contains( "_" )) { result.append(name.substring( 0 , 1 ).toUpperCase()); result.append(name.substring( 1 ).toLowerCase()); return result.toString(); } String[] camels = name.split( "_" ); for (String camel : camels) { if (!camel.isEmpty()) { result.append(camel.substring( 0 , 1 ).toUpperCase()); result.append(camel.substring( 1 ).toLowerCase()); } } System.err.println( "upcaseCamelName:" +result.toString()); return result.toString(); } public static Map<String, Object> camelMap(Map<String, Object> data) { if (data == null ) { return null ; } Map<String, Object> ret = new HashMap<>(); Iterator<String> keyIt = data.keySet().iterator(); while (keyIt.hasNext()) { String key = (String) keyIt.next(); ret.put(camelName(key), data.get(key)); if (key.endsWith( "_TEXT" )) { String key1 = key.substring( 0 , key.lastIndexOf( "_" )); ret.put(camelName(key1) + "_Text" , data.get(key)); } } System.err.println( "data:" +data); System.err.println( "camelMap:" +ret); return ret; } public static Map<String, Object> underscopeMap(Map<String, Object> data) { if (data == null ) { return null ; } Map<String, Object> ret = new HashMap<>(); Iterator<String> keyIt = data.keySet().iterator(); while (keyIt.hasNext()) { String key = (String) keyIt.next(); ret.put(underscoreName(key), data.get(key)); } System.err.println( "underscopeMap:" +ret); return ret; } } |
yian
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)