C# String à Flotteur de Conversion
J'ai besoin de convertir une chaîne de caractères à un flotteur. Ces est est mon exemple de chaîne:
1 MW +00000.00 mm
2 MW +0000.000 mm
3 MW -00000.01 mm
4 MW +00000.00 mm
5 MW +00002.92 mm
6 MW +00002.69 mm
Et c'est ce que je fais:
text = text.Substring(pos + 5, 9).Trim();
float val = 0.0F;
float.TryParse(texto, out val);
this.txtDimension1.Text = val.ToString();
Ok, cela fonctionne pour mon environnement, qui est en_US, mais lorsque j'exécute ce même morceau de code dans un environnement espagnol, il convertit -00000.01 de -1.0
Je pense que c'est une virgule problème, en anglais numéros sont séparés par un point (".") et en espagnol, ils sont séparés par une virgule (",").
Comment puis-je faire ce travail sur les deux langues?
Grâce,
Richard.
OriginalL'auteur richardalberto | 2010-10-21
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour passer le CultureInfo pour la culture que les chaînes de caractères sont au format.
http://msdn.microsoft.com/en-us/library/3s27fasw.aspx
L'exemple de MSDN serait:
Alternativement, si votre entrée chaînes sont formatées différemment, puis utilisez
CultureInfo.CurrentCulture
bon j'ai une question ici... si je passe les CultureInfo pour, disons, l'anglais, le "." en anglais et "," sur l'espagnol? merci
Je suis peut-être pas compris la question. Sont le chaînes formatées différemment selon la culture?
tant pis... il suffit 😉 merci 😉
OriginalL'auteur PaulG
Utilisation CultureInfo.InvariantCulture.
Si les chaînes d'entrée peut varier, vous aurez à détecter, et jusqu'à votre entrée avec la bonne culture.
OriginalL'auteur Robert Harvey
Vous pouvez essayer de la mettre en œuvre à l'aide de la ToSingle méthode qui est essentiellement le Alias "Float"
en C#.
Je suis d'accord avec Robert Harvey comme il le souligne l'info Culture et à l'aide de Tryparse de surcharge. Bonne suggestion!
OriginalL'auteur Nightforce2
Ce n'est pas une réponse à la question, mais je l'ai ajouté comme une réponse juste pour montrer le code..
Je veux juste vous alerter sur l'utilisation de
Substring
, Ça peut poser un problème lorsque le premier numéro de devenir plus que 9 [Deux caractères+].Je pense que l'utilisation d'expression régulière est mieux dans ce cas, et c'est l'expression que vous avez besoin de:
Remarque: vous pouvez améliorer la qualité de l'expression en vérifier la valeur, si c'est un numéro, mais je pense que c'est assez pour votre situation.
Bonne chance!
OriginalL'auteur Homam
Vous aurez besoin d'utiliser la TryParse surcharge qui permet de spécifier la Culture, vous aurez envie d'avoir l'info Culture pour fr-fr et vous avez alors il parse le même pour tout le monde.
OriginalL'auteur Mitchel Sellers