Méthode substring

Bonjour,
j'aimerais enregistrer dans ma base ceci
"12AF" donnera dans la base "AF"
"2S" ......................................."S"
"21C"....................................."C"
j'utlise la methode substring mais cela ne marche pour tous
merci d'avance

3 réponses

Résumé de la discussion

Un utilisateur cherche à enregistrer dans une base des valeurs issues d'une chaîne comme «12AF» qui doit donner «AF» et «2S» qui doit donner «S», mais substring ne fonctionne pas pour tous les cas. Des expressions régulières en Java permettent d'extraire les lettres en retirant les chiffres; on peut utiliser par exemple str.replaceAll("[0-9]", "") ou str.replaceFirst("[0-9]*", "") selon le cas. La réponse préconise de privilégier les regex lorsqu'il y a des chiffres devant les lettres et d'éviter plusieurs remplacements pour des questions de performance, en privilégiant des motifs qui opèrent un seul passage. En complément, la discussion évoque aussi le contexte d'utilisation côté serveur Java et les implications sur le choix entre JavaScript côté client et JSP/servlets appropriées.

Bobot (l’IA à votre service)
  1. en gros, tu veux supprimer tous les chiffres en début de string jusqu'à ce que tu tombes sur une lettre c'est ça ?
    Si oui, fais une expression régulière et utilise preg_replace() : http://www.php.net/manual/fr/function.preg-replace.php
    0
    1. oui c'est bien cela juste enregistre le lettre dans ma base
      0
    2. je suis entrain de developper avec java
      0
    3. merci pour ta reponse
      0
    4. je suis encore loin du compte tu as d'autres suggestions
      0
    5. Je ne connais pas bien le Java, mais en 1 seconde sur google ("java regexp") : http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html ...
      0
  2. Salut,

    je le mets pas dans une boucle mais voila le concept :)

    $str1 = "12AF";
    $str2 = "2S";
    $str3 = "21C";
    
    $str1 = preg_replace ("([0-9].*?)", "", $str1) ;
    $str2 = preg_replace ("([0-9].*?)", "", $str2) ;
    $str3 = preg_replace ("([0-9].*?)", "", $str3) ;


    Cela supprime tous les chiffres des chaines de caractères souhaitées.
    0
    1. je develope sous java et les string
      $str1 = "12AF";
      $str2 = "2S";
      $str3 = "21C";
      sont sur des boutons d'un calendrier ,k'en pense tu ?
      0
    2. merci pour ta reponse
      0
  3. Modérateur
    Pour reprendre l'idée des expressions régulières, voici un exemple qui supprime tous les chiffres de la chaîne de caractères :

    String str = "123ABC456";
    String res = str.replaceAll("[0-9]", "");
    System.out.println(res);

    Au niveau performance, si dans tous les cas les chiffres sont avant les lettres, il serait préférable de faire comme ceci (il y aura un seul remplacement au lieu d'un par chiffre) :

    String str = "123ABC";
    String res = str.replaceFirst("[0-9]*", "");
    System.out.println(res);
    0
    1. Brs KX ca fait un moment merci pour ta reponse .En clair si je l'applique sur n'importe kel bouton de mon calendrier ca va marche?
      si oui alors dis je veux verifier k'une valeur est deja dans ma base de donnee avant den inserer le meme ou un autre pour eviter des doublons par exemple
      que lundi ne prenne pas deux fois la valeur matin ,cela doit etre matin ou soir je suis presque a la fin de mon agenda .merci pour la reponse
      0
    2. Modérateur
      Je ne me souviens plus trop du format de ton calendrier (je vois un certain nombre de posts sur le forum), mais la première solution va retirer tous les chiffres de la chaîne, et la deuxième supprimer le premier nombre, ce qui pourrait revenir au même et correspondre à tous tes boutons selon leur format.

      Au niveau des doublons, je ne m'y connais pas trop en bases de données, mais je pense que tu peux directement faire une requête qui évite les doublons (et ce sera plus rapide que de le refaire en Java)
      0
    3. je prefere le premier ki retire tous les chiffres ;pour la bd une requete serait mieux en sql c'est bien cela du genre une comparaison ou equals ?
      0
    4. une derniere info comment pourrais je afficher ma page avec son calendrier comme une page web ? peut etre a partir d'un server local en un keski me fo comme astuce ou proceder pour reussir ?
      0
    5. Modérateur
      Au niveau des doublons SQL, regarde ici pour te faire une idée. Dans ton cas, la date pourrait servir d'identifiant unique...

      Pour afficher ton calendrier comme une page web, ça dépend du contexte, si tu es déjà dans un contexte web (servlets, JSP...) c'est direct, sinon tu génére un fichier HTML avec le contenu, et tu l'ouvres avec Desktop.Open
      0