2017-05-06 2 views

Antwort

0

Sie suchen nach der find Methode für String. Um den Index von 'g' in "Program" finden Sie

"Program".find('g') 

Docs on find tun können.

+0

Dank Mann, ich meinen Code beenden kann jetzt =) – MrCoder

2

Obwohl ein wenig verworren, als ich möchte, ist eine andere Lösung, die die Chars Iterator und seine position()-Funktion:

"Program".chars().position(|c| c == 'g').unwrap() 

find in der akzeptierten Lösung verwendet kehrt das Byte-Offset und nicht unbedingt die Index des Charakters. Es funktioniert gut mit grundlegenden ASCII-Strings, wie dem in der Frage, und obwohl es einen Wert zurückgibt, wenn es mit Multi-Byte-Unicode-Zeichenfolgen verwendet wird, wird die Behandlung des resultierenden Werts als Zeichenindex zu Problemen führen.

Dies funktioniert:

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" 

dies nicht funktioniert:

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 "ズ" 
Verwandte Themen