83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107
1

Нахождение символа в строке

25.12.2010, 20:19. Показов 3552. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим есть:
C++
1
AnsiString data = "sampe|sampe1|sample2|sample3|sample4";
Мне нужно найти все индексы символа "|". Метод "Pos" всегда дает индекс первого вхождения. Я конечно могу и другим способом выдать все индексы, но я помню где-то читал, помню очень туммано, что "Pos" вроде можно заставить искать не с начала, а с определенного символа. Или есть другой метод который ищет с определенного символа, или при повторном вызове метод дает индекс последующего вхождения, точно не помню... Подскажите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2010, 20:19
Ответы с готовыми решениями:

В заданной строке после каждого символа вставить число, соответствующее коду этого символа
В заданной строке после каждого символа вставить число, соответствующее коду этого символа. PS...

Нахождение самого частого символа в строке
Доброго времени суток. Ищу доброго человека для помощи. Необходимо написать программу на С. Или...

Нахождение, замена и удаление символа в строке
В памяти находится строка символов по адресу А1 и длиной N. Проверьте, встречается ли в строке...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа...

8
LK
Заблокирован
25.12.2010, 21:09 2
int delim_pos = data("|");
String word = data.SubString(0,delim_pos1-1);
0 - символ , с которого начинать искать
1
83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107
25.12.2010, 22:40  [ТС] 3
LK, попробовал ваш способ, не получилось

C++
1
2
3
AnsiString data = "sampe|sampe1|sample2|sample3|sample4";
int delim_pos = data("|");
String word = data.SubString(0,delim_pos - 1)
В результате получил ошибку:
E2314 Call of nonfunction
0
26 / 24 / 5
Регистрация: 22.04.2010
Сообщений: 761
25.12.2010, 22:58 4
C++
1
2
3
4
5
6
7
8
9
10
        AnsiString aa="1232|4wr|3aeafe|aarae";
        short pos[100],k=0;
        ZeroMemory(pos,100*sizeof(short));
        for (int i=0;i<aa.Length();i++)
        {
                if (aa.SubString(i+1,1)=="|")
                {
                        pos[k++]=i;
                }
        }
1
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
26.12.2010, 10:39 5
y_katz, а почему бы не использовать функцию Pos, которая возвращает индекс первого вхождения? потом обрезаем строку по этот символ и ищем дальше, пока строка не закончится, либо все символы не будут найдены
1
83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107
26.12.2010, 12:46  [ТС] 6
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
y_katz, а почему бы не использовать функцию Pos, которая возвращает индекс первого вхождения? потом обрезаем строку по этот символ и ищем дальше, пока строка не закончится, либо все символы не будут найдены
Так я как раз так и делаю, но мне хотелось более сишное решение, плюс я вроде где-то читал что если какую-то функцию прогнать for циклом, то она будет возращать индекс каждого следующего вхождения, хотя может я перепутал...
0
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
26.12.2010, 18:44 7
y_katz, наверное, что-то вроде этого:
C++
1
2
3
4
5
6
7
8
9
String s="sampe|sampe1|sample2|sample3|sample4";
 int pos=s.Pos("|");
 
 for(int i=0;i<s.Length()-1;i++)
 {
 i+=pos;
 ShowMessage( s.SubString(pos,s.Length()).Pos("|")+pos-1 );
 pos=s.SubString(pos,s.Length()).Pos("|")+pos;
 }
2
83 / 18 / 2
Регистрация: 17.11.2010
Сообщений: 107
26.12.2010, 20:26  [ТС] 8
NiTan наверно я как раз вот такой кусок кода видел и оттуда запомнил, потому что у вас подход весьма оригинален для меня. И вообще у вас форум такой суперский, я как начал тут задавать вопросы очень рванул в изучении C++!
0
Эксперт С++
3952 / 1807 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.12.2010, 00:59 9
y_katz, Вот здесь я показывал, как выполнить загрузку содержимое определённого сайта и разбить на теги: IdHTTP1->Get().
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2010, 00:59
Помогаю со студенческими работами здесь

Найти первое вхождение заданного символа в строке и вернуть адрес найденного символа
Разработать функцию, которая находит первое вхождение заданного символа в строке возвращая адрес...

Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку
В заданной строке заменить каждый символ «*» числом, соответствующим номеру по порядку вхождения...

В строке заменить каждый символ «!» числом, равным индексу этого символа в строке
В заданной строке заменить каждый символ «!» числом, равным индексу этого символа в строке. ...

Операции в строке: поиск, замена, удаление символа в строке
Доброго здравия! В ассемблере совсем новичок, поэтому прошу помощи. Программа должна получать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru