Tôi đang cố gắng tạo kết hợp trình phân tích cú pháp/trình phân tích cú pháp chung.Chuỗi định dạng phân tích cú pháp
kịch bản Ví dụ:
- Tôi có một chuỗi cho string.Format(), ví dụ
var format = "{0}-{1}"
- Tôi có một mảng đối tượng (chuỗi) cho đầu vào, ví dụ:
var arr = new[] { "asdf", "qwer" }
- Tôi định dạng mảng bằng chuỗi định dạng, ví dụ:
var res = string.Format(format, arr)
Điều tôi đang cố gắng thực hiện là hoàn nguyên chuỗi được định dạng lại thành mảng đối tượng (chuỗi). Một cái gì đó như (mã giả):
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
Bất kỳ ai có kinh nghiệm làm điều gì đó như thế này? Tôi đang suy nghĩ về việc sử dụng biểu thức thông thường (sửa đổi chuỗi định dạng ban đầu, và sau đó vượt qua nó để Regex.Matches để có được mảng) và chạy nó cho mỗi giữ chỗ trong chuỗi định dạng. Điều này có khả thi hay là có giải pháp nào hiệu quả hơn?
Chuỗi dài chưa được định dạng? –
@Chris: trong giới hạn hợp lý. ATM, tôi chỉ sử dụng tên này trên tên tập tin. –
Lưu ý rằng với tính tổng quát nhất định, kết quả có thể không rõ ràng - ví dụ: 'format = '{0} - {1}'' và 'arr = {" as-df "," qw-er "}'. Có thể bị hủy định dạng theo ba cách khác nhau. Bạn cần xác định cách đối phó với sự mơ hồ hoặc giới hạn nội dung của chuỗi định dạng và giá trị. – peterchen