정규 표현식에별로 좋지 않아 숫자 서식 지정에 사용하려고합니다.C# Regex Number Formatting
원래 번호는 05XX-123과 같을 것이고 0을 추가하여 05XX-000123으로 만들 수 있습니다 (하이픈 다음의 숫자는 길이가 6이 될 때까지 0이 붙어야합니다). 내가 정규식 문자열 연산을 혼합하면 난 내가 런타임에 정의 할 수 있도록 이러한 변환을하고자하기 때문에 세 번째 줄을 피하기 위해 같은 것 ... 그러나, 다음과 같은 솔루션을
Regex regex = Regex(@"^([0-9]{2})([A-Za-z]{2})-([0-9]*)$");
Match match = regex.Match("05XX-123");
string result = match.Groups[1].Value + match.Groups[2].Value + "-" + match.Groups[3].Value.PadLeft(6, '0');
을이 작업을 수행 할 수 있습니다.
이게 가능해야하는 것과 비슷하지만, 세 번째 그룹 (글자 뒤의 숫자)에 0을 어떻게 추가하는지 잘 모르겠습니다.
Regex regex = Regex(@"^([0-9]{2})([A-Za-z]{2})-([0-9]*)$");
string result = regex.Replace("05XX-123", "$1$2-$3");
은 물론 위의 예는 제공된와 같은 값을 반환하지만 $ 3의 길이 여섯 확인하기 위해 0을 앞에 추가 할 수있는 $ 3 그룹으로 뭔가를 할 수있을 것처럼 보인다.
도움을 주시면 감사하겠습니다. (당신이 뭔가 다른 정규식이 필요하지 않은 경우)
이 작품 문자열 연산을 완전히 피할 수 있습니다. 그 이유는 런타임에 변환이 정의되기를 바랍니다. – majorpayne27
@ majorpayne27 : 런타임시 정규식 패턴을 생성하는 것이 문자열 함수의 매개 변수를 변경하는 것보다 훨씬 쉽습니다. IMO – Dyppl
문자열 함수를 사용하는 것이 확실히 쉬울 것이지만 사용 가능한 옵션이 아닙니다. 다시 컴파일하지 않고 출력 형식을 변경할 수 있어야합니다. – majorpayne27