par 'nvarchar datatype' Je suppose que vous voulez dire string.
Ray
Et 'C £' signifie 'C #' ...
T30
Réponses:
151
Cela dépend vraiment de la durée de NVARCHAR, car certaines des méthodes ci-dessus (en particulier celles qui convertissent via IntXX) ne fonctionneront pas pendant:
String s ="005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Quelque chose comme ça
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(newChar[]{'0'});// s = "58757843950000120465875468465874567456745674000004000"
problématique quand strInput= "0000000";ou similaire. car il renverra une chaîne vide au lieu d'un zéro.
avrahamcool
2
@avrahamcool qui peut être géré en regardant la longueur de la chaîne et en retournant simplement "0"si elle est vide après le découpage. Ou en utilisant PadLeft(1, '0').
Supposons que la corde soit très longue, pourquoi la couper deux fois? vous pouvez enregistrer la chaîne coupée dans une variable
avrahamcool
@avrahamcool, que voulez-vous dire, où est-il coupé deux fois? Merci pour le commentaire.
msysmilu
ah, @avrahamcool, c'est peut-être pour ça que je l'ai édité :) à la fin c'est une question mémoire vs temps de calcul; je suppose qu'aujourd'hui, la mémoire n'est plus un problème dans ce type d'applications
problématique quand numberString= "0000000";ou similaire
avrahamcool
1
@msysmilu car il renverra une chaîne vide au lieu d'un zéro.
avrahamcool
1
@avrahamcool Vous avez raison. Ergo j'ai suggéré une réponse pour éviter cela
msysmilu
5
TryParse fonctionne si votre nombre est inférieur à Int32.MaxValue . Cela vous donne également la possibilité de gérer des chaînes mal formatées. Fonctionne de la même manière pour Int64.MaxValue et Int64.TryParse .
int number;if(Int32.TryParse(nvarchar,out number)){// etc...
number.ToString();}
Peut-être exagéré pour la question telle que posée, c'est la solution que je recherche car elle permet également de supprimer les zéros à droite pour les décimales. (Decimal.TryParse)
winwaed
@JK Je sais que le message est ancien mais j'aime vraiment cette solution car elle est propre et très facile à comprendre. Une seule question changeant le texte dans un événement de pression de touche déclenchera également l'événement de changement de texte - ai-je raison?
Ken
3
Ce Regex vous permet d'éviter les mauvais résultats avec des chiffres qui ne sont constitués que de zéros "0000" et de travailler sur des chiffres de n'importe quelle longueur:
Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire sur la manière et / ou la raison pour laquelle il résout le problème améliorerait la valeur à long terme de la réponse.
Nic3500
Amélioration de la réponse selon la suggestion de @ Nic3500
Réponses:
Cela dépend vraiment de la durée de NVARCHAR, car certaines des méthodes ci-dessus (en particulier celles qui convertissent via IntXX) ne fonctionneront pas pendant:
Quelque chose comme ça
la source
strInput= "0000000";
ou similaire. car il renverra une chaîne vide au lieu d'un zéro."0"
si elle est vide après le découpage. Ou en utilisantPadLeft(1, '0')
.Voici le code dont vous avez besoin:
la source
strInput= "0000000";
ou similairestrInput.TrimStart('0').PadLeft(1, '0');
va gérer"0000" > "0"
.Code pour éviter de renvoyer une chaîne vide (lorsque l'entrée est comme "00000").
la source
return numberString.TrimStart('0');
la source
numberString= "0000000";
ou similaireTryParse fonctionne si votre nombre est inférieur à Int32.MaxValue . Cela vous donne également la possibilité de gérer des chaînes mal formatées. Fonctionne de la même manière pour Int64.MaxValue et Int64.TryParse .
la source
Ce Regex vous permet d'éviter les mauvais résultats avec des chiffres qui ne sont constitués que de zéros "0000" et de travailler sur des chiffres de n'importe quelle longueur:
Et cette expression régulière supprimera les zéros non significatifs n'importe où dans la chaîne:
la source
L'utilisation de ce qui suit renverra un seul 0 lorsque l'entrée est entièrement à 0.
la source
la source