Я знаю, что мое мнение по этому вопросу на самом деле не так популярно, так что вы, ребята, можете забросить меня в забвение, если хотите, но я должен разглагольствовать немного (и это содержит решение, но не в том, как плакат попросил).
Я действительно не понимаю, почему люди так быстро переходят к регулярным выражениям.
Я провел много разборов строк (используется для скрининга экранов меню vt100), и я не нашел ни одного случая, когда регулярные выражения были бы намного проще, чем просто написание кода. (Возможно, пара была бы немного легче, но не намного).
Я вроде понимаю, что они должны быть легче, когда вы их знаете - но вы видите, как кто-то задает такой вопрос, и понимаете, что им не так просто получить каждый программист, взглянув на него. Если одному программисту придется потратить 10 минут на размышления, это приведет к огромным чистым потерям по сравнению с простым программированием, даже если вы потратили 5 минут на написание 5 строк.
Так что ему понадобится документация - и если кто-то, находящийся на том же уровне, столкнется с ней, он не сможет изменить ее без знаний вне своей области, даже с документацией.
Я имею в виду, если бы постеру пришлось спросить о тривиальном случае - тогда просто нет такого понятия, как тривиальный случай.
public String getRealText(String scanMe) {
for(int i=0 ; i < scanMe.length ; i++)
if( isUpper(scanMe[i]) && isLower(scanMe[i+1]) )
return scanMe.subString(i);
return null; }
Я имею в виду, что это 5 строк, но это просто, доступно для чтения и быстрее, чем большинство (все?) Парсеры RE. После того как вы завернули регулярное выражение в метод и прокомментировали его, разница в размере не поддается измерению. Разница во времени - хорошо для автора, очевидно, было бы намного меньше времени - как это могло бы быть для следующего парня, который сталкивается с его кодом.
И эта строковая операция является одной из тех, которые еще проще в C с указателями - и это было бы еще быстрее, поскольку функции тестирования являются макросами в C.
Кстати, убедитесь, что вы ищете пробел во втором слоте, а не просто строчную переменную, иначе вы пропустите все строки, начинающиеся со слов A или I.