批量将驼峰命名字符串改下划线

本文介绍如何使用Python编程实现批量将驼峰命名风格的字符串转换为下划线命名风格,适用于处理大量变量名或者文件名的转换操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def change_str(zifu):
	str = zifu[0]       #定义一个新的字符串
	for i in range(1, len(zifu)):            #遍历字符串
		if zifu[i].isupper() and not zifu[i-1].isupper() :
			str+='_'
			str +=zifu[i]
		elif zifu[i]. isupper() and zifu[i-1].isupper() and zifu[i+1].islower:        # 碰到多个大写字母的情况
			str+='_'
			str+=zifu[i]
		else:
			str+=zifu[i]
	return str.lower()                     #转换成小写
			

my_dic = ['id','disasterId','disasterName','province','county','town','village','groups','longitude','latitude','geographicLocation','disasterType','disasterScaleNumber','scaleCompany','scaleLevel','disasterOccurrenceTime','urgentYransferPopulation','probableCasualties','relocationAvoidancePersonnel','avoidCasualties','avoidEconomicLosses','
### FreeMarker 字符串驼峰命名的实现 在 FreeMarker 中,可以通过自定义方法或内置工具类来实现字符串下划线命名格式到驼峰命名格式的换。以下是具体的实现方式: #### 方法一:通过 Java 自定义方法 可以编写一个 Java 类,在其中提供将下划线命名换为驼峰命名的功能,并将其注册到 FreeMarker 配置中。 ```java public class StringUtils { /** * 下划线命名驼峰命名 */ public static String underlineToCamelCase(String str) { if (str == null || "".equals(str.trim())) { return ""; } StringBuilder result = new StringBuilder(); String[] splitStr = str.toLowerCase().split("_"); for (int i = 0; i < splitStr.length; i++) { if (i == 0) { result.append(splitStr[i]); } else { result.append(capitalize(splitStr[i])); } } return result.toString(); } private static String capitalize(String str) { char firstChar = str.charAt(0); if (Character.isUpperCase(firstChar)) { return str; } else { return Character.toUpperCase(firstChar) + str.substring(1); } } } ``` 接着,将该 `StringUtils` 注册到 FreeMarker 的配置中[^5]: ```java Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setClassForTemplateLoading(FreeMarkerTest.class, "/templates/"); cfg.setDefaultEncoding("UTF-8"); // 注册自定义工具类 Map<String, Object> sharedVariables = new HashMap<>(); sharedVariables.put("stringUtil", new StringUtils()); cfg.setSharedVariable(sharedVariables); Template template = cfg.getTemplate("example.ftl"); template.process(root, writer); ``` 在模板文件中调用如下: ```ftl ${stringUtil.underlineToCamelCase("user_name")} ``` --- #### 方法二:纯 FreeMarker 脚本实现 如果不想引入额外的 Java 工具类,也可以直接利用 FreeMarker 提供的脚本来完成这一功能。以下是一个简单的例子: ```ftl <#function underline_to_camel_case input> <#if input??> <#assign parts = input?lower_case?split('_') /> <#return parts[0]?trim + parts?subseq(1)?join("")?capitalize_all() /> </#if> </#function> <#-- 辅助函数 --> <#function capitalize_all word_list> <#local capitalized_words = []> <#list word_list as word> <#if word?has_content> <#local capitalized_word = word?substring(0,1)?upper_case + word?substring(1)> <#capitalized_words.add(capitalized_word)> </#if> </#list> <#return capitalized_words> </#function> <!-- 使用示例 --> User Name: ${underline_to_camel_case("user_name")} <!-- 输出 user_name => userName --> ``` 以上代码片段展示了如何仅依靠 FreeMarker 内部逻辑实现下划线驼峰命名的操作[^6]。 --- ### 总结 两种方法各有优劣: - **Java 自定义方法** 更加灵活高效,适合复杂场景下的批量处理。 - **Pure FreeMarker Script** 则无需依赖外部库,适用于轻量级需求。 最终选择取决于项目架构和技术栈的具体情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值