"首次提交"
This commit is contained in:
1
string_learn/.gitignore
vendored
Executable file
1
string_learn/.gitignore
vendored
Executable file
@ -0,0 +1 @@
|
||||
/target
|
8
string_learn/Cargo.toml
Executable file
8
string_learn/Cargo.toml
Executable file
@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "string_learn"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
58
string_learn/src/main.rs
Executable file
58
string_learn/src/main.rs
Executable file
@ -0,0 +1,58 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
string_learn();
|
||||
}
|
||||
|
||||
fn string_learn() {
|
||||
//字符串字面值 类型:&str
|
||||
let str1 = "this is a &str";
|
||||
|
||||
//从字符串字面值创建一个string,类型:String
|
||||
let str2 = String::from("hello");
|
||||
|
||||
//字符串引用。 类型: &string
|
||||
let str3 = &str2;
|
||||
|
||||
//字符串切片 类型:&str
|
||||
let str3_1 = &str2[0..2];
|
||||
|
||||
//拼接字符串
|
||||
let str4 = String::from("world");
|
||||
|
||||
//let str5 = str2 + str4;//这是不允许的,+ 右边必须是字符串的切片或者字符串字面值
|
||||
let str5 = str2 + &str4; //经过这句之后 str2 的所有权已经移交到 + 的实现函数里面了,使用后就被释放了。
|
||||
|
||||
//使用format 宏去连接字符串
|
||||
let str6 = format!("{}{}", str5, "aaa");
|
||||
|
||||
//字符串不允许使用下标进行访问:
|
||||
//rust的字符串是unicode编码的,每个“字母”所占用的byte数是不等长得。
|
||||
println!("长度为 {}", "中文".len());//这里的结果应该是6,每个中文占三个字节
|
||||
println!("长度为 {}", "AB".len());//这里的结果应该是2,每个ascii占1bytes
|
||||
/* 除此之外,还有很多其他的国家、文化的语言,可能是多个字母才能表达一个意思的,还有的是逆序的
|
||||
所以也没法进行拆分单个 “字母”,这里的字母指的就是unicode标量值
|
||||
*/
|
||||
//获取字符串对应的内存数据
|
||||
let buff = "中文".bytes();
|
||||
print!("中文 bytes is [");
|
||||
for it in buff {
|
||||
print!("{} ", it);
|
||||
}
|
||||
println!("]");
|
||||
|
||||
//当我们使用字符串切片的获取一部分内容的时候需要额外小心,
|
||||
//每种语言其char的大小是不一样的,所以如果获取的内容处于两个char之间就会panic
|
||||
let s = &"中文"[0..3];
|
||||
println!("字符串切片 中文[0..3] is {}", s);
|
||||
|
||||
//let s = &"中文"[0..2];//一个中文char占用3byte,这里只取了两个byte就会panic
|
||||
|
||||
//遍历所有char可以用chars方法
|
||||
print!("遍历所有char: [");
|
||||
for it in "这是一个中文+表情💚DE字符串".chars() {
|
||||
print!("{} ", it);
|
||||
}
|
||||
println!("]");
|
||||
|
||||
//println!("char0 is {}", "adb"[0]); //默认不支持根据索引进行获取,因为无法保证能够获取到一个有效的unicode标量值 char
|
||||
}
|
Reference in New Issue
Block a user