Câu trả lời:
Nó thực sự phụ thuộc vào thời gian NVARCHAR là bao lâu, vì một vài trong số các phương thức trên (đặc biệt là các phương thức chuyển đổi qua IntXX) sẽ không hoạt động:
String s = "005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Một cái gì đó như thế này sẽ
String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(new Char[] { '0' } );
// s = "58757843950000120465875468465874567456745674000004000"
strInput= "0000000";
hoặc tương tự. bởi vì nó sẽ trả về một chuỗi rỗng thay vì một số không.
"0"
nếu nó trống sau khi cắt. Hoặc sử dụng PadLeft(1, '0')
.
Đây là mã bạn cần:
string strInput = "0001234";
strInput = strInput.TrimStart('0');
strInput= "0000000";
hoặc tương tự
strInput.TrimStart('0').PadLeft(1, '0');
sẽ xử lý "0000" > "0"
.
Mã để tránh trả về một chuỗi trống (khi đầu vào giống như "00000").
string myStr = "00012345";
myStr = myStr.TrimStart('0');
myStr = myStr.Length > 0 ? myStr : "0";
return numberString.TrimStart('0');
numberString= "0000000";
hoặc tương tự
TryPude hoạt động nếu số của bạn ít hơn Int32.MaxValue . Điều này cũng cung cấp cho bạn cơ hội để xử lý các chuỗi định dạng xấu. Hoạt động tương tự cho Int64.MaxValue và Int64.TryPude .
int number;
if(Int32.TryParse(nvarchar, out number))
{
// etc...
number.ToString();
}
Regex này cho phép bạn tránh kết quả sai với các chữ số chỉ xuất phát từ số "0000" và hoạt động trên các chữ số có độ dài bất kỳ:
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, "")));
}
Và regex này sẽ xóa các số 0 đứng đầu ở bất cứ đâu trong chuỗi:
new Regex(@"(?<!\d)0+(?=\d)");
// "0000123432 d=0 p=002 3?0574 m=600"
// => "123432 d=0 p=2 3?574 m=600"
Sử dụng như sau sẽ trả về một 0 khi đầu vào là 0.
string s = "0000000"
s = int.Parse(s).ToString();
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");