如何通过&str切片获取其在原String中的起始和结束位置?
能否通过&str切片获取其在原String中的起止位置?
不行,仅靠&str切片本身没法获取它在原String里的起始和结束位置。
&str是个胖指针,只包含两个核心信息:指向字符串底层字节的指针,以及切片的字节长度。它不会记录自己源自哪个原String,也没保存相对于原字符串的偏移数据。
拿你给的代码举例:
let original_string = String::from("Hello, world!"); let slice: &str = &original_string[0..5];
这里的slice只知道自己指向的是"Hello"的字节数据,长度是5,但对这些字节在original_string里的位置完全没概念。
如果需要跟踪切片在原字符串中的位置,得自己额外保存相关信息——比如创建切片时就把起止索引存好,或者用自定义结构体把切片和对应的位置绑定在一起。
内容的提问来源于stack exchange,提问作者Miodek
相关产品推荐
相关产品推荐

