fn to_pascal_case(input: &str) -> String {
let mut input = input.to_string();
if !input.contains(" ") {
input = input.replace(r"(?<=[a-z])(?=[A-Z])", " ");
}
let words: Vec<&str> = input.split_whitespace()
.flat_map(|s| s.split('_'))
.collect();
let mut result = String::new();
for word in words {
if !word.is_empty() {
result.push_str(&word[0..1].to_uppercase());
result.push_str(&word[1..].to_lowercase());
}
}
result
}
fn main() {
println!("{}", to_pascal_case("get file content"));
println!("{}", to_pascal_case("get_file_content"));
println!("{}", to_pascal_case("get______file___content"));
println!("{}", to_pascal_case("get______file____ content"));
println!("{}", to_pascal_case("GET FILE CONTENT"));
println!("{}", to_pascal_case("get file content"));
println!("{}", to_pascal_case("getFileContent"));
}
/*
run:
GetFileContent
GetFileContent
GetFileContent
GetFileContent
GetFileContent
GetFileContent
Getfilecontent
*/