Comment puis-je obtenir une liste de tous les caractères imprimables en C#?
J'aimerais être en mesure d'obtenir un char tableau de tous les caractères imprimables en C#, quelqu'un sait comment faire cela?
edit:
Par imprimable je veux dire le visible de caractères Européens, donc oui, les accents, les tildes, les accents, etc.
Définir imprimable?
Veuillez définir "imprimable" - voulez-vous dire au juste "caractères ASCII imprimables" (comme par ilivewithin de réponse) ou voudriez-vous d'inclure des caractères accentués?
Je suis en supposant que par l'impression que nous parlons imprimable sur papier? Si vous êtes à la recherche pour juste un ascii de recherche asciitable.com est un. Pour l'unicode charmap.exe est l'option évidente.
Veuillez définir "imprimable" - voulez-vous dire au juste "caractères ASCII imprimables" (comme par ilivewithin de réponse) ou voudriez-vous d'inclure des caractères accentués?
Je suis en supposant que par l'impression que nous parlons imprimable sur papier? Si vous êtes à la recherche pour juste un ascii de recherche asciitable.com est un. Pour l'unicode charmap.exe est l'option évidente.
OriginalL'auteur Phil Bennett | 2009-05-20
Vous devez vous connecter pour publier un commentaire.
Cela vous donnera une liste avec tous les caractères qui ne sont pas considérés comme des caractères de contrôle:
Vous pouvez enquêter sur les autres Char.IsXxxx des méthodes pour trouver la combinaison qui convient à vos besoins.
Il ressemble au c++ déclaration rend le compteur wrap à 0 après 65535, ce qui signifie que c <= char.MaxValue sera toujours vrai. L'int peut contenir de plus grandes valeurs, il incrémente beyound char.MaxValue, et la sortie de la condition est remplie et que la boucle s'arrête.
(Je souhaite parfois les commentaires pourraient être modifiés de sorte que ces ennuyeux des fautes d'orthographe pourraient être supprimés...)
OriginalL'auteur Fredrik Mörk
Voici une LINQ version de Fredrik de la solution. Notez que
Enumerable.Range
donne uneIEnumerable<int>
donc, vous devez convertir les caractères en premier.Cast<char>
aurait travaillé dans 3.5SP0 je crois, mais comme de 3.5SP1 que vous avez à faire un "bon" conversion:J'ai créé le résultat sous la forme d'un tableau comme c'est ce que la question demandait - il n'est pas forcément la meilleure idée. Cela dépend du cas d'utilisation.
Remarque que cela n'a pas tenu compte de tous les caractères Unicode, seulement ceux dans le plan multilingue de base. Je ne sais pas de quoi il en retourne pour haut/bas des mères porteuses, mais il en vaut au moins, sachant qu'un seul
char
n'a pas vraiment vous permettre de représenter tout 🙁Mince, alors, j'ai battu Jon Skeet et ma réponse perd toujours. 🙁 Juste une remarque: Vous pouvez remplacer cela, Sélectionnez appel à un Casting pour le rendre légèrement plus agréable.
Downvoters, veuillez en donner les raisons. (Note que bien que ceci est similaire à Noldorin réponse, je crois qu'il donne plus d'informations - et ça fonctionne 🙂
Noldorin: Vous avez posté plus vite parce qu'il m'a fallu une minute pour vérifier que mon code a fonctionné 🙂
Skeet: Bien, aurait encore été plus vite si j'avais pris la minute, mais meh. Je suppose que la collaboration sur ce site est vraiment hors de la fenêtre si il y a des votes pour gagner. 😛
OriginalL'auteur Jon Skeet
Une LINQ solution de (basé sur la Fredrik Mork):
Oups, ont besoin de la fonte. Des acclamations.
Ne fonctionne pas comme de 3.5SP1. Voir ma réponse.
Fonctionne pour moi.
Le 2ème argument de Gamme est un nombre... n'est-ce pas dire qu'il doit être
char.MaxValue - char.MinValue
?OriginalL'auteur Noldorin
Je sais ASCII n'ai pas demandé, mais c'est un moyen rapide d'obtenir une liste de tous les caractères ASCII imprimables.
Voir ce Table ASCII.
OriginalL'auteur Michael Murphy
OriginalL'auteur Artem Y