Faire des abréviations d'État à partir des noms d'État
Est-il construit dans .NET fonctionnalité pour faire état des abréviations de noms d'état?
Je sais que la fonction ne serait pas difficile à écrire, mais je suppose que MS a pensé à un moyen plus efficace que le x50:
if statename.tolower = "new york" then
statename = "NY"
else if
toutes les autres pensées de faire cela d'autant plus efficaces sont également appréciés.
source d'informationauteur Jim
Vous devez vous connecter pour publier un commentaire.
donc, si vous allez à aller dans cette voie, je voudrais:
utiliser un commutateur déclaration au lieu de if else
switch(state.ToLower())
. Ce sera plus efficace que si consolidés. Le compilateur d'optimiser l'instruction switch.Si vous devez absolument utiliser un si puis faire une déclaration. Ne
chaîne lowerCaseState = état.ToLower().
si(lowerCaseState == "new york"){....}else if...
De cette façon, vous créez un minuscule string une fois (les chaînes sont immuables) à la place de chaque partie du si de l'état.
En vérité, je serais probablement utiliser une instruction switch avec une méthode statique.
Vous pouvez créer un objet pour stocker les valeurs pour les charger à chaque fois que le programme s'exécute, mais pourquoi? Vous pourriez tout aussi bien laisser le compilateur d'optimiser l'accès pour les non-évolution des valeurs statiques.
Juste virer de bord sur Homam's réponse. J'ai reçu l'instruction de commutation de retour des états avec enveloppe standard.
Vous devez utiliser un
Dictionary<String, String>
avecStringComparer.OrdinalIgnoreCase
.De nouveau en ajoutant sur Homam réponsej'avais juste besoin d'une traduction du texte donc j'ai pris les énumérations:
Rien de mal avec les solutions proposées ici, mais je voudrais suggérer une autre option qui, à mon avis, est un peu mieux. Vous pouvez définir les éléments suivants Enum méthode d'extension qui utilise la réflexion et la Description de l'attribut pour obtenir le plein nom de l'état:
En gros, cela vous permettra d'effectuer les opérations suivantes:
Maintenant vous avez besoin pour décorer votre agent recenseur valeurs avec l'attribut Description:
Et la méthode d'extension va vous donner le nom complet de l'état. Si la description n'est pas défini, il vous donnera la valeur d'Enum nom par exemple pour l'Alaska, il serait AK.
Cette façon, vous avez un seul morceau de code qui permet de récupérer valeurs descriptives pour tout agent recenseur pas seulement pour les états. Tout ce que vous devez faire est de définir la Description des valeurs Enum qui ont besoin d'être le plus descriptif et l'extension fera le reste.
REMARQUE: L'extension doit être placé dans l'espace de noms du Système pour qu'il fonctionne hors de la boîte, sans avoir à faire référence de l'espace de noms.
Ici est testé C# fonction qui prend de l'état AMÉRICAIN de l'abréviation et retourne la totalité du nom de l'état. Il utilise un dictionnaire de la méthode qui est plus compact que d'un interrupteur. Pour répondre à votre question, vous pouvez simplement échanger les clés et les valeurs.
https://heuristically.wordpress.com/2011/04/19/csharp-dictionary-us-state-abbreivation-names-using-sas/
Une base de données avec le nom de l'état champ indexé (index cluster si c'est le champ que vous allez à la recherche sur le plus souvent), de sorte que la recherche serait efficace et une requête qui renvoie à l'état abréviation:
Cela a l'avantage d'être réutilisable dans de nombreuses applications et d'environnements.
Cela est techniquement hors sujet, mais je vais chercher si quelqu'un de la province après 2 lettre les codes, puis le pays est à côté. voici comment faire pour obtenir l'2 lettre les codes de pays, ayant d'abord le nom de pays: