Rust如何将驼峰字符串转换为蛇形命名
“在Rust中如何将驼峰命名的字符串(例如’myVariableName’)转换为蛇形命名(例如’my_variable_name’)?希望能提供一个高效的实现方法,最好能处理各种边界情况,比如连续大写字母或首字母大写的情况。”
2 回复
Rust中可以用正则表达式或手动处理。推荐用regex库:
use regex::Regex;
fn camel_to_snake(s: &str) -> String {
let re = Regex::new(r"(?P<l>[a-z])(?P<u>[A-Z])").unwrap();
re.replace_all(s, "${l}_${u}").to_lowercase()
}
手动处理版本:
fn camel_to_snake(s: &str) -> String {
let mut snake = String::new();
for (i, c) in s.chars().enumerate() {
if c.is_uppercase() && i > 0 {
snake.push('_');
}
snake.push(c.to_ascii_lowercase());
}
snake
}
调用示例:
fn main() {
println!("{}", camel_to_snake("helloWorld")); // hello_world
println!("{}", camel_to_snake("HTTPRequest")); // http_request
}
记得在Cargo.toml添加依赖:
[dependencies]
regex = "1.0"
在 Rust 中,可以使用正则表达式库 regex 来实现驼峰命名(CamelCase)到蛇形命名(snake_case)的转换。以下是具体步骤和代码示例:
-
添加依赖:在
Cargo.toml中添加:[dependencies] regex = "1" -
转换函数:
use regex::Regex; fn camel_to_snake(input: &str) -> String { let re = Regex::new(r"(?P<lower>[a-z])(?P<upper>[A-Z])").unwrap(); re.replace_all(input, "${lower}_${upper}").to_lowercase() }
示例使用:
fn main() {
println!("{}", camel_to_snake("helloWorld")); // 输出 "hello_world"
println!("{}", camel_to_snake("getHTTPResponse")); // 输出 "get_http_response"
}
说明:
- 正则表达式
r"(?P<lower>[a-z])(?P<upper>[A-Z])"匹配小写字母后紧跟大写字母的位置,并在两者之间插入下划线。 replace_all方法将匹配的部分替换为"${lower}_${upper}"格式。- 最后通过
to_lowercase()确保所有字母转为小写,形成标准的蛇形命名。
这种方法能正确处理大多数驼峰字符串,包括连续大写字母(如 “HTTP” 会被转为 “http”)。

