문자열에서 모든 숫자가 아닌 문자를 제거하는 문자열 클래스에 대한 간단한 확장 방법이 있습니다. 예를 들어 "(555) 215-4444"와 같은 전화 번호가 있으면 "5552154444"로 변환됩니다. 다음과 같이 보입니다 :확장 메서드에서 null 처리
public static string ToDigitsOnly(this string input)
{
Regex digitsOnly = new Regex(@"[^\d]");
return digitsOnly.Replace(input, String.Empty);
}
여기서 null 값을 처리하는 가장 효율적인 방법은 무엇일까요? 이러한 경우에 따라야 할 전형적인 패턴이 있습니까? 예를 들어 null이 전달되면 null 값을 돌려 주시겠습니까? 그것은 문자열 클래스를 확장하는 이후 여기에 null 값을 허용 할 수 있습니다 및 arguement 예외를 throw하지 않을 수도 있습니다 이후 (나는 이것을 사용하면 arguement 정말 전달 해요 ...)? 그러나 어떤 사람들은 '정상적인'방법처럼 예외를 던져야한다고 주장 할 수도 있습니다. 여기에서 사용하는 가장 좋은 방법은 무엇입니까?
감사합니다.
내가 보통 같은 확장 방법을 치료하는 것이 확장을 사용할 수 있습니다. 그것은 사람들이 코드를 읽는 방법을 정리하는 단지 방법 일뿐입니다. StringFunctions.ToDigitsOnly (s)보다는 s.ToDigitsOnly()로 줄이기 때문에 예외를 던지려면 다른 곳으로 던져 넣으십시오. –
null가 애플리케이션에서 유효한/예상 값이면 null을 반환합니다. 그렇지 않은 경우 예외를 throw합니다. 개인적으로 여기서 ArgumentException을 던질 것입니다. – JosephHirn
보조 메모로; 당신은 Regex를 필요로하지 않습니다.'String.Join ("", input.Where (char.IsDigit))' – I4V