如何在Rust中找到字符串中字符的索引?

时间:2017-05-06 12:52:13

标签: string indexing rust character

我有一个字符串,其值为" Program",我想找到字符索引' g'在那个字符串中。

2 个答案:

答案 0 :(得分:12)

虽然比我想要的更复杂,但另一个解决方案是使用Chars迭代器及其position()函数:

"Program".chars().position(|c| c == 'g').unwrap()
接受的解决方案中使用的

find返回字节偏移量,而不一定是字符的索引。它适用于基本的ASCII字符串,例如问题中的字符串,当它与多字节Unicode字符串一起使用时会返回一个值,将结果值视为字符索引会导致问题。

这有效:

let my_string = "Program";
let g_index = my_string.find("g");   // 3
let g: String = my_string.chars().skip(g_index).take(1).collect();
assert_eq!("g", g);   // g is "g"

这不起作用:

let my_string = "プログラマーズ";
let g_index = my_string.find("グ");    // 6
let g: String = my_string.chars().skip(g_index).take(1).collect();
assert_eq!("グ", g);    // g is "ズ"

答案 1 :(得分:5)

您正在寻找String的find方法。要在'g'中找到"Program"的索引,您可以执行

"Program".find('g')

Docs on find