寻找可实现snake_case/CamelCase互转的最新Julia字符串处理库
Julia字符串大小写转换方案
目前仍在活跃维护的、支持字符串多格式大小写转换的Julia库可以选择Casing.jl,完全覆盖你提到的使用场景:
基础安装
在Julia REPL中执行包管理命令安装:] add Casing
功能实现示例
基础驼峰转蛇形
using Casing # 基础场景转换 to_snake("timeStamp") # 输出 "time_stamp" to_snake("askBestVolume") # 输出 "ask_best_volume"
带保留词的转换
你提到的需要保留特定缩写/关键词的场景,可以通过preserve_acronyms参数直接实现:
# 指定30MW为保留词不拆分 to_snake("askBest30MWPrice", preserve_acronyms=["30MW"]) # 输出 "ask_best_30MW_price"
轻量无依赖实现方案
如果你不想引入额外的第三方依赖,也可以使用如下自定义函数实现相同功能:
function camel_to_snake(s::String; preserve::Vector{String}=String[]) # 先标记所有保留词避免被拆分 for word in preserve s = replace(s, word => "###$word###") end # 拆分驼峰片段 s = replace(s, r"(?<=[a-z])(?=[A-Z])" => "_") s = replace(s, r"(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])" => "_") # 恢复保留词并统一非保留部分为小写 parts = split(s, "###") return join([p in preserve ? p : lowercase(p) for p in parts if !isempty(p)]) end # 测试用例 @assert camel_to_snake("timeStamp") == "time_stamp" @assert camel_to_snake("askBestVolume") == "ask_best_volume" @assert camel_to_snake("askBest30MWPrice", preserve=["30MW"]) == "ask_best_30MW_price"
内容的提问来源于stack exchange,提问作者wueli
相关产品推荐
相关产品推荐

