2009-09-29 15 views
1

J'ai un numéro de série qui est le type de chaîne.Le format de chaîne ne fonctionne pas Pour la chaîne

Comme ceci;

Chaîne.Format ("{0: #### - #### - #### - ####}", "1234567891234567"); Je dois voir Like This, 1234-5678-9123-4567;

Bu ce code ne fonctionne pas?

Pouvez-vous m'aider?

+0

Et j'ai essayé ceci, String.Format ("{0: #### - #### - #### - ####}", Double.Parse ("1234567891234567")); Mais je vois comme ça 1234-5678-9123-4568 pourquoi? Double.Parse augmente le dernier chiffre. Je ne comprends pas. – atromgame

+0

C'est un autre problème tous ensemble. Check http://stackoverflow.com/questions/1193630/add-two-double-given-wrong-result –

+0

Double.Parse ("1234567891234567") entraînera une erreur d'arrondi, car un double ne peut contenir autant de chiffres . Un Int64 peut! –

Répondre

3

Cette syntaxe prend un int, essayez ceci:

String.Format("{0:####-####-####-####}", 1234567891234567); 

Edit: Si vous souhaitez utiliser cette syntaxe sur une chaîne essayez ceci:

String.Format("{0:####-####-####-####}", Convert.ToInt64("1234567891234567")) 
+0

Non, je ne peux pas faire ça; String mycode = "1234567891234567"; String.Format ("{0: #### - #### - #### - ####}", mycode); J'utilise un numéro de série diynamique. Donc j'utilise la variable String. – atromgame

+0

J'utilise aussi Decilam.Parse(), ça marche aussi. – atromgame

+1

Semble un peu compliqué de convertir le 'chaîne' en un' long' que pour le convertir à nouveau en un 'string'. – LukeH

2

Pour #### - ## ## - #### - ####, vous aurez besoin d'un numéro. Mais vous le nourrissez d'une ficelle.

Il serait plus pratique de remplir la chaîne avec des zéros supplémentaires sur la gauche pour qu'elle devienne exactement 16 caractères. Ensuite, insérez le tiret à trois endroits à l'intérieur de la chaîne. Le convertir en un Int64 fonctionnera également mais si ces chaînes deviennent plus grandes ou commencent à contenir des non-numériques, alors vous aurez un problème.

string Key = "123456789"; 
string FormattedKey = Key.PadLeft(16, '0').Insert(12, "-").Insert(8, "-").Insert(4, "-"); 

Ceci devrait être une alternative au formatage. Il fait exactement la clé de 16 caractères, puis insère trois tirets de droite à gauche. (Plus facile de garder la trace des indices.)

Il y a probablement beaucoup d'autres alternatives mais celle-ci fonctionne très bien.

+0

Alors, comment puis-je formater une variable de chaîne? – atromgame

+0

Pour utiliser la syntaxe que vous avez essayée ci-dessus, convertissez la chaîne en entier –

+1

Ou utilisez la solution alternative que j'ai ajoutée à ma réponse. :-) –

Questions connexes