C #을 사용하여 문자열에서 선행 0을 제거하는 방법은 무엇입니까?
예를 들어 다음 숫자에서 모든 선행 0을 제거하고 싶습니다.
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();
}
답변
이 정규식을 사용하면 숫자가 “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, "")));
}
그리고이 정규식은 문자열 내부의 모든 위치에서 선행 0을 제거합니다.
new Regex(@"(?<!\d)0+(?=\d)");
// "0000123432 d=0 p=002 3?0574 m=600"
// => "123432 d=0 p=2 3?574 m=600"
답변
다음을 사용하면 입력이 모두 0 일 때 단일 0을 반환합니다.
string s = "0000000"
s = int.Parse(s).ToString();