You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻找可实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:24:02