2016-06-05 2 views
-1

Я пытаюсь получить индекс каждого символа в тексте «ABCDCEF» (textBox.text). Проблема в том, что первый индекс «C» равен 2, а второй индекс C - 4, а второй индекс «C» в результате равен 2.получить позицию char в textBox

Это код:

 foreach (char character in textBox1.Text) 
     { 
      MessageBox.Show(character + " - " + textBox1.Text.IndexOf(character)); 
     } 

Результат:

символ - индекс

А - 0

В - 1

С - 2

Д - 3

С - 2

Е - 5

F - 6

Правильный результат должен быть:

символ - индекс

A - 0

В - 1

С - 2

Д - 3

С - 4

Е - 5

F - 6

Почему это происходит?

Благодаря

+0

Это потому, что вам нужно увеличить startIndex на каждой итерации! –

+0

Как сказал Иисус.Посмотрите на [Получить индекс следующего аналогичного символа] (http://stackoverflow.com/questions/23633861/get-index-of-next-same-character) – Tone

+0

@ Тон, как сказано, я думал, что вы имели в виду Христа! Я не видел комментариев выше, хотя ... –

ответ

2

string.IndexOf возвращает первого появления символа, поэтому она возвращает индекс 2 для c поиска.

MSDN говорит,

Сообщает с нуля индекс первого вхождения указанного символа Unicode или строки в данном случае. Метод возвращает -1, если символ или строка не найдены в этом экземпляре.

Вы можете преобразовать его в цикл for и получить индекс для каждого символа.

for(int i=0;i<textBox1.Text.Length;i++) 
{ 
    MessageBox.Show(textBox1.Text[i] + " - " + i); 
} 
+0

Я попытался вставить разделитель с циклом for, но не работал. Это код: для (INT I = 0; г <10; я ++) { , если (char.IsUpper (TextBox1.Text [я])) TextBox1.Text = textBox1.Text.Insert (i, "|"); } –

Смежные вопросы