Tôi có sau C# mà chỉ đơn giản thay thế các bộ phận của chuỗi đầu vào trông giống như EQUIP: 19d005 vào URL, như thế này:Regular Expression thay thế hoa trong C#
input = Regex.Replace(input, @"(EQUIP:)(\S+)", @"<a title=""View equipment item $2"" href=""/EquipmentDisplay.asp?eqnum=$2"">$1$2</a>", RegexOptions.IgnoreCase);
HTML sẽ trông như thế này.
<a title="View equipment item 19d005" href="/EquipmentDisplay.asp?eqnum=19d005">EQUIP:19d005</a>
Vấn đề duy nhất là trang đích hy vọng querystring eqnum được tất cả các chữ hoa nên nó sẽ trả về các thiết bị chính xác khi eqnum = 19D005 nhưng thất bại nếu nó nhận eqnum = 19d005.
Tôi đoán tôi có thể sửa đổi và sửa yêu cầu giá trị chữ hoa của DesignDisplay.asp về giá trị chữ hoa, nếu có thể tôi muốn làm cho mã C# tuân thủ trang ASP cổ điển hiện có bằng cách tăng $ 2 trong câu lệnh Regex.Replace ở trên .
Lý tưởng nhất, tôi muốn HTML trở lại giống như thế này:
<a title="View equipment item 19d005" href="/EquipmentDisplay.asp?eqnum=19D005">EQUIP:19d005</a>
Thông báo mặc dù chuỗi ban đầu là EQUIP: 19d005 (chữ thường), chỉ có eqnum = giá trị được uppercased.
Nó có thể được thực hiện và nếu có, cách nào là cách dễ nhất để làm điều đó?
Một lớp lót là một giải pháp rất thanh lịch, hoạt động hiệu quả bằng cách này. @Vinko đề cập đến việc sử dụng chức năng ẩn danh nhưng không đưa ra ví dụ, do đó tại sao tôi chọn giải pháp của bạn. Tôi là một chút bối rối như tôi đã thấy => được sử dụng cho LINQ to SQL, biểu hiện cây và bây giờ các chức năng vô danh? Tại sao rất nhiều công dụng? – Sprogz
Cú pháp kiểu => là một phiên bản ngắn hơn của cú pháp delegate() {}. Các ưu điểm khác là nếu bạn có một lớp lót như trên, bạn không cần câu lệnh trả về và các kiểu được suy ra - vì vậy tôi chỉ định m thay vì Đối sánh m. Cú pháp lambda giúp làm cho mã ngắn gọn hơn. – Duncan