Làm cách nào để phân tích cú pháp đối số dòng lệnh được hiểu là đường dẫn? args [] chứa chuỗi sẽ được tự động tham gia nếu họ được trích dẫn, ví dụ:C# Phân tích dòng lệnh của các đường dẫn được trích dẫn và tránh các ký tự thoát
example.exe một hai "ba bốn"
args[0] = one
args[1] = two
args[2] = three four
Tuy nhiên, args [] sẽ không sở hữu phân tích cú pháp "C: \ Example \ "làm đối số. Thay vào đó, nó sẽ cung cấp đối số là "C: \ Example" "(kèm thêm dấu ngoặc kép.) Điều này là do dấu gạch chéo ngược trong đường dẫn được coi là ký tự thoát và do đó báo giá kết thúc mà người dùng đã cung cấp trên lệnh line trở thành một phần của cuộc tranh luận
.eg:.
một example.exe "C: \ InputFolder" "C: \ OutuptFolder \"
args[0] = one
args[1] = C:\InputFolder"
args[2] = C:\OutputFolder"
một kludge dễ dàng có thể là:
_path = args[i].Replace("\"", @"\");
Tuy nhiên, tôi chắc chắn có một thực hành tốt nhất cho việc này. Làm thế nào có thể một cách chính xác phân tích cú pháp một dòng lệnh mà inlcudes đường dẫn, ngăn chặn các args [] mảng từ không đúng cách được dân cư với stings đã được phân tích cú pháp cho các ký tự thoát?
LƯU Ý: Tôi không muốn bao gồm toàn bộ thư viện phân tích cú pháp dòng lệnh trong dự án của mình! Tôi chỉ cần xử lý các đường dẫn được trích dẫn và muốn làm như vậy theo kiểu "thủ công". Vui lòng không đề nghị NConsoler, Mono hoặc bất kỳ thư viện phân tích cú pháp dòng lệnh "bồn rửa nhà bếp" lớn nào khác.
CSONG LƯU Ý: Theo như tôi có thể biết, đây không phải là câu hỏi trùng lặp. Trong khi các câu hỏi khác tập trung vào phân tích cú pháp dòng lệnh chung, câu hỏi này là cụ thể cho vấn đề mà đường dẫn giới thiệu khi các phần của chúng được hiểu là chuỗi thoát.
Trường hợp chính xác bạn thấy nhân vật phụ này? Tôi đang sử dụng trình biên dịch đoạn mã. Đây là chuỗi chính .. string s = args [0]; \t \t Console.WriteLine (s); Và nó hoạt động như nó cần. – shahkalpesh
@shahkalpesh: Dunno về trình biên dịch đoạn mã của bạn, nhưng hãy thử chạy nó từ dòng lệnh và cung cấp chương trình của bạn với đối số kết thúc bằng \ "(dấu gạch chéo ngược-doublequote). Như ebwi đã nói, mở mắt ra. –
Tôi hiểu ngay bây giờ. Xin lỗi rằng tôi không hiểu chính xác đối số đầu vào – shahkalpesh