Как удалить начальные нули в строках с помощью С#?
Например, в следующих числах я хотел бы удалить все начальные нули.
0001234
0000001234
00001234
Как удалить начальные нули в строках с помощью С#?
Например, в следующих числах я хотел бы удалить все начальные нули.
0001234
0000001234
00001234
Это действительно зависит от того, как долго NVARCHAR, так как некоторые из вышеперечисленных (особенно те, которые конвертируют через IntXX) методы не будут работать:
String s = "005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Что-то вроде этого
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(new Char[] { '0' } );
// s = "58757843950000120465875468465874567456745674000004000"
Это код, который вам нужен:
string strInput = "0001234";
strInput = strInput.TrimStart('0');
Код, чтобы избежать возврата пустой строки (когда ввод похож на "00000" ).
string myStr = "00012345";
myStr = myStr.TrimStart('0');
myStr = myStr.Length > 0 ? myStr : "0";
return numberString.TrimStart('0');
TryParse работает, если ваш номер меньше Int32.MaxValue. Это также дает вам возможность обрабатывать сильно форматированные строки. Работает так же для Int64.MaxValue и Int64.TryParse.
int number;
if(Int32.TryParse(nvarchar, out number))
{
// etc...
number.ToString();
}
Использование следующего вернет один 0, когда на входе все 0.
string s = "0000000"
s = int.Parse(s).ToString();
Это регулярное выражение позволяет избежать неверного результата с цифрами, которые состоят только из нулей "0000", и работают с цифрами любой длины:
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, "")));
}
И это регулярное выражение удалит ведущие нули в любом месте строки:
new Regex(@"(?<!\d)0+(?=\d)");
// "0000123432 d=0 p=002 3?0574 m=600"
// => "123432 d=0 p=2 3?574 m=600"
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");