У меня есть строка как dhgsf20101211124422asddas. эта строка содержит дату в yyyymmddhhmmss formate. Как получить ту дату от длинной строки как вышеупомянутый.Заранее спасибо
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner. html . Предполагая, что это java.
Я бы использовал регулярное выражение. Если предположить, что это всегда 14-значное число и что в строке не будет других точно 14-значных чисел, это будет легко сделать.
Есть довольно много инструментов, которые помогут вам создавать регулярные выражения, я обычно использую http://www.redfernplace.com/software-projects/regex-builder/ , что упрощает работу даже без особых знаний о как они работают.
Регулярные выражения должны работать, чтобы захватить возможные подстроки - затем некоторая логика здравомыслия, чтобы проверить даты на любую другую достоверность
Я бы использовал синтаксический анализ Java DateFormat
. Он позволяет перемещаться по строке с помощью объекта ParsePosition
.
DateFormat format = new SimpleDateFormat("yyyymmddhhmmss");
ParsePosition pp = new ParsePosition(0);
for (int c = 0; c < text.length(); c++) {
pp.setIndex(c); pp.setErrorIndex(-1);
Date d = format.parse(text, pp);
if (d != null) {
// Handle parsed date
// Only advance past the last parsed date if there was no error
if (pp.getErrorIndex() < 0) c = pp.getIndex() - 1;
}
}