bool OsmAnd::Utilities::extractFirstNumberPosition(const QString& value, int& first, int& last, bool allowSigned, bool allowDot) { first = -1; last = -1; int curPos = 0; for(auto itChr = value.cbegin(); itChr != value.cend() && (first == -1 || last == -1); ++itChr, curPos++) { auto chr = *itChr; if (first == -1 && chr.isDigit()) first = curPos; if (last == -1 && first != -1 && !chr.isDigit() && ((allowDot && chr != '.') || !allowDot)) last = curPos - 1; } if (first >= 1 && allowSigned && value[first - 1] == '-') first -= 1; if (first != -1 && last == -1) last = value.length() - 1; return first != -1; }
void StringIteratorTest::constIteratorRandomAccessIteratorRequirementsTest() { const QString str = "ABCDEF"; const StringConstIterator first = str.cbegin(); StringConstIterator it; StringConstIterator::difference_type n; /* * it + n */ n = 1; it = first + n; QCOMPARE(*it, wchar_t('B')); n = 2; it = n + first; QCOMPARE(*it, wchar_t('C')); /* * b - a */ StringConstIterator a, b; a = first + 1; b = first + 3; n = b - a; QVERIFY( n == 2 ); }
void StringIteratorTest::constIteratorTest() { const QString str = "ABCDEF"; /* * Constructs and assignements */ // Direct assignement StringConstIterator it(str.cbegin()); QCOMPARE(*it, wchar_t('A')); // Default constructed StringConstIterator first, last; // Assignement first = str.cbegin(); QCOMPARE(*first, wchar_t('A')); last = first; QCOMPARE(*last, wchar_t('A')); /* * Increment */ it = str.cbegin(); QCOMPARE(*it, wchar_t('A')); // Pre-increment ++it; QCOMPARE(*it, wchar_t('B')); // Post-increment QCOMPARE(*it++, wchar_t('B')); QCOMPARE(*it, wchar_t('C')); /* * Decrement */ it = str.cbegin(); QCOMPARE(*it, wchar_t('A')); ++it; ++it; QCOMPARE(*it, wchar_t('C')); // Pre-decrement --it; QCOMPARE(*it, wchar_t('B')); // Post-decrement QCOMPARE(*it--, wchar_t('B')); QCOMPARE(*it, wchar_t('A')); /* * Increment and decrement by n */ it = str.cbegin(); QCOMPARE(*it, wchar_t('A')); it += 2; QCOMPARE(*it, wchar_t('C')); it -= 2; QCOMPARE(*it, wchar_t('A')); first = it; it = first + 2; QCOMPARE(*it, wchar_t('C')); first = it - 1; QCOMPARE(*first, wchar_t('B')); /* * Index based access */ it = str.cbegin(); QCOMPARE(it[0], wchar_t('A')); QCOMPARE(it[1], wchar_t('B')); QCOMPARE(it[2], wchar_t('C')); /* * Comparisons */ first = str.cbegin(); it = first; QVERIFY(it == first); QVERIFY(!(it != first)); QVERIFY(!(it < first)); QVERIFY(it <= first); QVERIFY(!(it > first)); QVERIFY(it >= first); // Increment it and check ++it; QVERIFY(!(it == first)); QVERIFY(it != first); QVERIFY(!(it < first)); QVERIFY(!(it <= first)); QVERIFY(it > first); QVERIFY(it >= first); }