web-dev-qa-db-fra.com

Comment supprimer les zéros de gauche

Comment supprimer les zéros de gauche dans les chaînes en utilisant C #?

Par exemple, dans les numéros suivants, j'aimerais supprimer tous les zéros non significatifs.

0001234
0000001234
00001234
110
user874966

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 pour:

String s = "005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";

Quelque chose comme ça serait

String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(new Char[] { '0' } );
// s = "58757843950000120465875468465874567456745674000004000"
135
Master Stroke

C'est le code dont vous avez besoin:

string strInput = "0001234";
strInput = strInput.TrimStart('0');
266
Craig Hannon

Code pour éviter de renvoyer une chaîne vide (lorsque l'entrée correspond à "00000").

string myStr = "00012345";
myStr = myStr.TrimStart('0');
myStr = myStr.Length > 0 ? myStr : "0";
26
msysmilu

return numberString.TrimStart('0');

23
Ray

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();
}
5
JK.

L'utilisation de ce qui suit retournera un seul 0 lorsque l'entrée est entièrement à 0.

string s = "0000000"
s = int.Parse(s).ToString();
2
Deependra Mishra

Cette regex vous permet d’éviter des résultats erronés avec des chiffres composés uniquement de zéros (0000) et de travailler sur des chiffres de longueur

using System.Text.RegularExpressions;

/*
00123 => 123
00000 => 0
00000a => 0a
00001a => 1a
00001a => 1a
0000132423423424565443546546356546454654633333a => 132423423424565443546546356546454654633333a
*/

Regex removeLeadingZeroesReg = new Regex(@"^0+(?=\d)");
var strs = new string[]
{
    "00123",
    "00000",
    "00000a",
    "00001a",
    "00001a",
    "0000132423423424565443546546356546454654633333a",
};
foreach (string str in strs)
{
    Debug.Print(string.Format("{0} => {1}", str, removeLeadingZeroesReg.Replace(str, "")));
}

Et cette expression rationnelle supprimera les zéros non significatifs n’importe où dans la chaîne:

new Regex(@"(?<!\d)0+(?=\d)");
//  "0000123432 d=0 p=002 3?0574 m=600"
//     => "123432 d=0 p=2 3?574 m=600"
1
dNP
Regex rx = new Regex(@"^0+(\d+)$");
rx.Replace("0001234", @"$1"); // => "1234"
rx.Replace("0001234000", @"$1"); // => "1234000"
rx.Replace("000", @"$1"); // => "0" (TrimStart will convert this to "")

// usage
var outString = rx.Replace(inputString, @"$1");
0
Bharat