标签:容器 String initial println let 字符串 Rust
创建String
//创建空字符串
let mut s = String::new();
//根据字符串字面值创建字符串 to_string();
let data = "initial contents"';
let s = data.to_string();
let s1 = "initial contents".to_string();
//使用String::from("initial contents");
let s = String::from("initial contents");
更新String
- put_str()方法:把一个字符串切片附加到String
- push()方法:把单个字符附加到String
- +:连接字符串
使用了类似这个签名的方法fn add(self, sL &str) -> String{…} - format!:连接多个字符串
//push_str()
let mut s = String::from("foo");
s.push_str("bar");
println!("{}", s);
//push()
s.push('l');
// +
let s1 = String::from("Hello, ");
let s2 = String::from("World!");
let s3 = s1 + &s2;
println!("{}", s3);
let s3 = format!("{}{}", s1, s2);
Rust不允许对String按索引的形式进行访问
内部表示:Vec:u8
Rust有三种看待字符串的方式:
- 字节
- 标量值
- 字形簇(最接近所谓的“字母”, 相对复杂标准库未提供)
let s = "नमस्ते";
for c in s.chars(){ //通过标量值遍历
println!("{}", c);
}
/*
न
म
स
्
त
े
*/
for c in s.bytes(){ // 通过字节遍历
println!("{}", c);
}
/*
224
164
// --snip--
165
135
*/
Rust不允许对String进行索引的最后一个原因
索引操作应消耗一个常量时间(O(1)),而String无法保证:需要遍历所有内容,来确定有多少个合法字符。
切割String
fn main(){
let hello = "Здравствуйте";
let s = &hello[0..4];
println!("{}", s);
}
可以使用[]和一个范围来创建字符串切片
- 必须谨慎使用
- 如果切割是跨越了字符边界,程序就好panic。
标签:容器,String,initial,println,let,字符串,Rust 来源: https://blog.csdn.net/fly_tzf/article/details/120371068
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。