Консультация № 188512
22.12.2015, 22:52
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:
Пишу программу на Qt 5.5
Мне нужно найти букву в строке, я узнал про функцию regexp, пожалуйста, подскажите как использовать ее.

Обсуждение

давно
Старший Модератор
17042
808
23.12.2015, 11:16
общий
23.12.2015, 11:18
Адресаты:
Здравствуйте,

Подскажите, что Вы подразумеваете под "найти букву в строке"? Функция поиска должна определить индекс первого вхождения подстроки в строку (т.е. возвратить int) или же сообщить, имеется, или не имеется подстрока в строке (т.е. возвратить bool)?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
312929
1973
27.12.2015, 03:24
общий
это ответ
Здравствуйте, racer30!

В Qt для работы с регулярными выражениями используется не одна функция, а целый набор классов. Предположим Вам нужно найти в строке определённую букву, например, 'a'. Тогда код будет выглядеть примерно так:
[code lang=shell]
QString string("ваша строка");
QRegularExpression RegExp("[a]");
QRegularExpressionMatch match = RegExp.match(string);
if (match.hasMatch())
{
int position = match.capturedStart(0);
}
[/code]
Здесь будет найдено первое вхождение буквы 'a' в строку. Если нужно найти все вхождения, используйте следующий код:
[code lang=shell]
QString string("ваша строка");
QRegularExpression RegExp("[a]");
QRegularExpressionMatchIterator iterator = RegExp.globalMatch(string);
while (iterator.hasNext())
{
QRegularExpressionMatch match = iterator.next();
if (match.hasMatch())
{
int position = match.capturedStart(0);
}
}
[/code]
Форма ответа