快速功能将字符串的首字母转换为大写?

时间:2018-12-01 12:37:25

标签: string rust uppercase

有人知道一个可以快速将String的首字母大写的函数吗? 确定可以去let newfoo = first_letter_to_uppper_case("foobar".to_string())let newfoo = "foobar".to_string().first_letter_to_uppper_case()

的地方

1 个答案:

答案 0 :(得分:0)

如果您想使用某个功能 let newfoo = first_letter_to_uppper_case("foobar".to_string()),请尝试使用以下内容。

fn main() {
  println!("{}", first_letter_to_uppper_case("foobar".to_string()));
}

fn first_letter_to_uppper_case (s1: String) -> String {
  let mut c = s1.chars();
  match c.next() {
    None => String::new(),
    Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
  }
}

如果您希望将其用作隐含在字符串类型上的函数,例如let newfoo = "foobar".to_string().first_letter_to_uppper_case(),请尝试:

pub trait FirstLetterToUppperCase {
  fn first_letter_to_uppper_case(self) -> String;
}

impl FirstLetterToUppperCase for String {
  fn first_letter_to_uppper_case(self) -> String {
    let mut c = self.chars();
    match c.next() {
      None => String::new(),
      Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
    }
  }
}
fn main() {
  println!("{}", "foobar".to_string().first_letter_to_uppper_case());
}

但是,这些功能不能很好地处理非ASCII字符。有关更多信息,请参见this answer.