10
votes

Générer une chaîne aléatoire alphanumérique en Java

J'utilise le constructeur de cordes d'une autre réponse, mais je ne peux rien utiliser d'autre que alpha / numérique, pas de blancheur, ponctuation, etc. Pouvez-vous expliquer comment limiter le jeu de caractères dans ce code? Comment puis-je assurer que cela est toujours de 30 caractères? XXX

J'ai examiné la plupart des autres réponses et je ne peux pas comprendre une solution à cela. Merci. Ne me criez pas si c'est un duplicata. La plupart des réponses n'expliquent pas quelle partie du code contrôle combien de temps le nombre généré est ou où ajuster le jeu de caractères.

J'ai aussi essayé stringbuilder.replace ('1'), Ce qui aurait pu fonctionner, mais Eclipse dit qu'il n'y a pas de méthode de remplacement pour StressBuilder.


2 commentaires

"La plupart des réponses n'expliquent pas quelle partie du code contrôle la durée du nombre généré ou où ajuster le jeu de caractères." ... indiquant que l'évidence est généralement considérée comme imprégnée.


Je savais qu'il y aurait des gens qui prendraient des ombrages avec cette question. Désolé si j'ai offensé, mais les réponses ci-dessous ont définitivement ajouté à la richesse et à la profondeur des connaissances disponibles sur le site. Je ne pense pas que ce soit un duplicata, car les réponses ont des explications plus détaillées du processus.


3 Réponses :


2
votes

Voici ce que j'utilise: xxx


1 commentaires

Merci pour ça. Très utile.



0
votes

Vous pouvez essayer ceci:

    //piece
    int i = 0;
    while(i < length){
      char temp =(char) (generator.nextInt(92)+32);
      if(Character.isLetterOrDigit(temp))
      {
        stringBuilder.append(temp);
        ++i;
      }
    }
    System.out.println(stringBuilder);


1 commentaires

Merci pour le temps et les informations. Je vais l'utiliser quelque part.



25
votes

Si vous souhaitez contrôler la personnage et la longueur, prenez par exemple xxx

et combiner avec xxx

pour spécifier le personnezfi. < / p>

Il n'est pas basé sur StringBuilder puisque vous connaissez la longueur et que vous n'avez pas besoin de toutes les frais généraux.

Il attribue un Char [] Tableau de la taille correcte, remplit chaque cellule dans ce tableau avec un caractère choisi au hasard à partir du tableau d'entrée.

Plus d'exemple Utilisez ici: http://ideone.com/xvizcd


4 commentaires

Merci d'ignorer les naysayers. Cela a fonctionné parfaitement!


@Privusguru BTW Le code que vous avez publié génère des chiffres entre (0..95) + 32 => 32..127 . Les caractères correspondant à ces numéros sont ici ascitable.com par exemple. Cela signifie que votre code signifierait que la limitation des nombres aléatoires à 48..57 ou 65..90 ou 97..122 ce serait plutôt douloureux. (Ou vous supprimez les caractères qui ne sont pas dans cette plage comme par exemple @sello proposé)


@zaple est-ce gratuitement la collision?


@Virtu non, c'est aléatoire. Cela inclut la génération de la même chaîne 10 fois de suite, bien qu'avec une très petite probabilité.