Tôi có một phương thức mở rộng đơn giản cho lớp chuỗi sẽ loại bỏ tất cả các ký tự không phải số từ một chuỗi. Vì vậy, nếu tôi có một chuỗi như ví dụ như một số điện thoại như "(555) 215-4444" nó sẽ chuyển đổi nó thành "5552154444". Có vẻ như sau:Xử lý null theo phương pháp mở rộng
public static string ToDigitsOnly(this string input)
{
Regex digitsOnly = new Regex(@"[^\d]");
return digitsOnly.Replace(input, String.Empty);
}
Tôi chỉ tự hỏi cách thanh lịch nhất để xử lý giá trị null ở đây là gì? Có một mô hình điển hình để làm theo trong những trường hợp này, chẳng hạn như trở lại một giá trị null nếu một null được thông qua trong? Có vẻ như kể từ khi tôi đang mở rộng lớp chuỗi ở đây tôi có thể muốn cho phép các giá trị null và không ném một ngoại lệ tranh luận (vì tôi không thực sự vượt qua trong một cuộc tranh luận khi tôi sử dụng này ...)? Nhưng một số người có thể lập luận rằng tôi nên ném một ngoại lệ như một phương pháp 'bình thường'. Thực hành tốt nhất bạn đang sử dụng ở đây là gì?
Cảm ơn!
tôi sẽ đối xử với phương pháp mở rộng như một cái bình thường. Nó chỉ là một cách để dọn dẹp cách mọi người đọc mã. Thay vì StringFunctions.ToDigitsOnly (s) bạn rút ngắn nó để s.ToDigitsOnly(), vì vậy nếu bạn muốn ném một ngoại lệ trong một, ném nó trong khác. –
Nếu null là giá trị hợp lệ/được mong đợi trong ứng dụng của bạn, hãy trả về giá trị rỗng. Nếu không, hãy ném một ngoại lệ. Cá nhân tôi sẽ ném một ArgumentException ở đây. – JosephHirn
Là một lưu ý phụ; bạn không cần một Regex ở đây 'String.Join (" ", input.Where (char.IsDigit))' – I4V