Hãy suy nghĩ về API này, nếu có. Mục tiêu là xác thực trước một chuỗi định dạng, để đảm bảo String.Format
sẽ không ném.
Lưu ý rằng bất kỳ chuỗi nào không chứa khe định dạng hợp lệ là chuỗi định dạng hợp lệ - nếu bạn không cố chèn bất kỳ thay thế nào.
-> Vì vậy, chúng tôi sẽ cần phải vượt qua trong số điện thoại hoặc args chúng tôi hy vọng để thay thế
Lưu ý rằng có tấn của các mô hình định dạng đặc sản khác nhau, đều có một ý nghĩa đặc biệt đối với các loại cụ thể: http://msdn.microsoft.com/en-us/library/system.string.format.aspx
Mặc dù có vẻ như String.Format
sẽ không ném nếu bạn vượt qua một chuỗi định dạng không khớp với loại đối số của bạn, trình định dạng trở nên vô nghĩa trong các trường hợp như vậy. ví dụ. String.Format("{0:0000}", "foo")
-> Vì vậy, một API như vậy sẽ thực sự hữu ích chỉ khi bạn cũng chuyển các loại args.
Nếu chúng ta cần chuyển chuỗi định dạng và một loạt các loại (ít nhất), thì về cơ bản chúng tôi có chữ ký là String.Format
, vậy tại sao không chỉ sử dụng và xử lý ngoại lệ? Nó sẽ là tốt đẹp nếu một cái gì đó như String.TryFormat
tồn tại, nhưng với kiến thức của tôi nó không.
Đồng thời, xác thực trước qua một số API, sau đó xác thực lại chính xác trong số String.Format
không phải là lý tưởng hoàn hảo.
Tôi nghĩ rằng giải pháp sạch nhất có thể để xác định một wrapper:
public static bool TryFormat(string format, out string result, params Object[] args)
{
try
{
result = String.Format(format, args);
return true;
}
catch(FormatException)
{
return false;
}
}
Ngôn ngữ nào được bạn làm việc tại? C#? –
Bạn nên gắn thẻ câu hỏi này bằng ngôn ngữ lập trình mà bạn đang tìm kiếm câu trả lời. – chucksmash
yes C# string.format – codeSetter