2010-05-02 4 views
1

J'ai une chaîne comme dhgsf20101211124422asddas. cette chaîne contient la date dans le format yyyymmddhhmmss. Comment obtenir cette date à partir d'une longue chaîne comme ci-dessus. Merci d'avanceDate d'extraction de la grande chaîne

+3

Quelle langue utilisez-vous? – Freddy

Répondre

0

expressions régulières doivent travailler pour saisir les possibles - alors sous-chaînes une logique de bon sens pour tester les dates pour toute autre validité

0

j'utiliser une expression régulière. En supposant que c'est toujours un nombre à 14 chiffres et qu'il n'y aura pas d'autres nombres longs à 14 chiffres dans la chaîne, ce serait facile à faire.

Il existe un certain nombre d'outils pour vous aider à construire des regex, j'utilise habituellement http://www.redfernplace.com/software-projects/regex-builder/ qui le rend facile même sans beaucoup de connaissances sur la façon dont ils fonctionnent.

2

J'utiliserais l'analyse syntaxique DateFormat de Java. Il vous permet de parcourir une chaîne à l'aide d'un objet 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; 
    } 
} 
Questions connexes