Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020

String.LastIndexOf: некорректный результат

06.05.2012, 01:49. Показов 2046. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго ...
Во общем глючит у меня метод string.LastIndexOf()
c дополнительными параметрами, начальной позиции и кол-во позиций для поиска
результат такой:
C#
1
2
3
4
5
6
7
 public static void Main(string[] args)
    {
        string str = "0*0*0*0";
        Console.WriteLine(str.LastIndexOf('*', 1).ToString());// результат 1 (неверный), верный - 5  
        Console.WriteLine(str.LastIndexOf('*',1,4).ToString());//вообще ошибку выдает 
        Console.ReadLine();
    }
Неужели и вправду глюк ?

нашел подобную тему
Про LastIndexOf
и вправду по тупому сделано

Добавлено через 12 минут
value
Тип: System.String
Строка для поиска.

startIndex
Тип: System.Int32
Позиция, с которой начинается поиск.(в действительности на которой заканчивается )

count
Тип: System.Int32
Количество позиций знаков для проверки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2012, 01:49
Ответы с готовыми решениями:

Строки: LastIndexOf и CompareTo выдают неправильный результат
Объясните, пожалуйста в чём ошибка. using System; public class Uno { public static void Main() { int var; ...

Некорректный результат при вычислениях
Где здесь косяк? не считает как надо :cry: double x=0, y=0; Console.WriteLine("Введите x"); ...

SHA-1 выдает некорректный результат
И так, мне нужно зашифровывать в sha1 текст. Я написал кое-что, но чот не работает..идеи?) static byte GetBytes(string str) { ...

6
 Аватар для dextermd
101 / 100 / 18
Регистрация: 04.09.2009
Сообщений: 133
06.05.2012, 01:59
Практическим методом обнаружил что при вызове LastIndexOf('*', 1), поиск происходит с право на лево начиная с указанного индекса (в данном случае 1). Таким образом проверяются лишь две позиции: 1 и 0, соответственно ответ 1 - правильный. А при вызове LastIndexOf('*', 1, 4) получается выход за передел массива, потому что после проверки позиций 1 и 0 массив заканчивается.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.05.2012, 02:13
В чем глук то? В первом случае метод встал на позицию 1, которую вы указали в качаестве startIndex, обнаружил искомый символ и вернул индекс 1.
Во втором случае метод встал на позицию 1, и начал двигаться в сторону нуля, но там два символа, а вы указали что нужно проверить 4 вот вам и ошибка.

Добавлено через 49 секунд

Не по теме:

Опаздал с ответом я сильно :)

1
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
06.05.2012, 02:32  [ТС]
Петррр, да глюка в методе нет .Но есть противоречия в названии метода .LastIndexOf, Ключевое слово Last в переводе с анг-яз означает последний .Индексация начинается с нуля ,слева на право ,тогда какого последний ищется в обратном направлении ?? .Так же этом же методе в варианте
C#
1
2
string str = "0*0*0*0"; 
        Console.WriteLine(str.IndexOf('*').ToString());
Возвратит 5 .Тут уже ищется слева на право (кстати правильно ищется )
Есть аналогичный метод String.IndexOf()
C#
1
Console.WriteLine(str.IndexOf('*',4,2).ToString());
В котором поиск идет так же не противореча здравому смыслу ,а вот в LastIndexOf все поставлено с ног на голову
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.05.2012, 02:35
На мой взгляд все логично.
0
 Аватар для dextermd
101 / 100 / 18
Регистрация: 04.09.2009
Сообщений: 133
06.05.2012, 02:38
Vitall, предполагаю что поиск справа на лево сделан для эффективности. Допустим у нас есть массив из миллиона символов, и нам нужно узнать последний индекс какого нибудь символа. Начиная поиск с конца массива больше вероятности встретить нужный символ.
1
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
06.05.2012, 02:44  [ТС]
Цитата Сообщение от dextermd Посмотреть сообщение
Начиная поиск с конца массива больше вероятности встретить нужный символ.
Согласен ,видимо в этом вся фишка
Но реализацию можно было оставить за кулуарами )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2012, 02:44
Помогаю со студенческими работами здесь

Оператор Mod - некорректный результат программы
выдает какую-то лажу Console.WriteLine(221^20); //вывод: 201 как? должно быть 1

Простые операции с числами - некорректный результат
Помогите разобраться, почему неправильно считаетusing System; class Mikami { static void Main() { int y, k,...

Некорректный результат при извлечении корня
Имеется кусок кода, значение qX и вопрос "почему?" Подскажите пжлст. vs 2012

Программа, решающая квадратные уравнения выдает некорректный результат
Пишу программу решающую квадратные уравнения, вроде все считает, считает правельно, но дает ответ допустим должно получится х1 = 1 х2 = -3...

LastIndexOf()
using System; using System.Globalization; class StrOps { static void Main() { string str1 = ".Net um...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru