C #을 사용하여 선행 0을 제거하는 방법 무엇입니까? 예를 들어 다음

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.MaxValueInt64.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();