rust学习 字符串 fn main() { let mut sString::new(); s.push(a); //添加一个字符 s.push_str(hello); s.push_str( world); println!({},s); let s1String::from(hi); let s2s1; println!({},s1); let s3 hello every.to_string(); println!({},s3); println!({},s3);//宏不影响 let s4format!({}{}{},a,b,c); println!({},s4); println!({},s4); let s51String::from(b); let s52String::from(c); let s5format!({}{}{},a,s51,s52); println!({},s5); println!({},s5); // let s6ab;//错误 cannot be used to concatenate two str strings // let s7as51; //错误 let s7s51a;//String必须在前面 //s1[0];//std::string::String cannot be indexed by {integer} let s8hello; // let s9s8[0];//required because of the requirements on the impl of std::ops::Index{integer} for str //String 和 str 都不能索引处理字符请使用 .chars() 迭代器。 let s String::from(hello); // 正确方式1chars() for c in s.chars() { println!({}, c); } let first_char s.chars().next(); // Optionchar println!({:?}, first_char); // Some(h) // 正确方式2收集为Vec let chars: Vecchar s.chars().collect(); println!(第一个字符: {}, chars[0]); // 正确方式3字节索引仅ASCII let bytes s.as_bytes(); println!(第一个字节: {}, bytes[0] as char); // 处理中文 let chinese String::from(你好); let first chinese.chars().next().unwrap(); println!(第一个中文字符: {}, first); // 你 } }