字符串

字符串常量

let str1 = "hello world";   // 字符串常量 "hello world"

let str2 = "hello
world";                     // 字符串常量 "hello\nworld"

let str3 = "foo\
            bar";           // 字符串常量 "foobar"

符号'\'会去除掉除符号后面所有的空格与换行符。

字符串类型

Rust中有两种常用的字符串相关类型String与&str。

String 类型

表示字符串,这是一个堆上分配的对象,本质是一个字节vector,所以String是可以增加的。

let mut s:String = String::new();    // 分配一个字符串
let alice = String::from("I like dogs");  // 堆上创建一个字符串。
&str 类型

表示字符串切片。

fn say_hello(s:&str){
    println!("hello:{}",s);
}

fn main(){
    let s = "world";
    say_hello(s);    // 打印 hello:world
}
&'static str类型

即字符串常量,同样也是&str,只是声明周期被标记为'static。'static 表示该资源的生命周期与整个程序是一致的。

let hw = "hello world";  // hw变量也是一种&str,生命周期为'static 。

String与&str相互转换

&str->String

let hw = String::from("hello world");
let mut s = "Hello".to_string();
println!("{}",s);

String->&str

String可以通过&强制转换为&str:

let hw = String::from("hello world");
let s1 = &hw;  // 转换
// 或
let s2 = &hw[..]

字符串转字节数组

let s = "hello"; // 或 "hello".to_string();
let bytes = s.as_bytes();  // 数组
println!("x = {:?}", bytes);    // 输出 x = [104, 101, 108, 108, 111]

遍历字符串

let s = "hello"; // 或 "hello".to_string();

for c in s.chars() {
    println!("{}", c);
}

字符串连接

String连接&str

使用 '+' 号:

let hello = "hello ".to_string();
let world = "world!";
let hw = hello + world

使用 push_str() 方法:

let mut s = "hello".to_string();
s.push_str(" world");
println!("{}",s);
String连接String

需要先把后一个String转换为&str

let hello = "Hello ".to_string();
let world = "world!".to_string();

let hello_world = hello + &world;
字符串长度

使用如下方法获取字符串长度:

fn len(&self) -> usize

例:

let a = String::from("foo");
let len = a.len();

assert_eq!(a, 3);

更多字符串方法请参考:https://doc.rust-lang.org/std/string/struct.String.html

results matching ""

    No results matching ""