tengo el siguiente C#, que se limite a sustituir partes de la cadena de entrada que se parecen a Equipar: 19d005 en direcciones URL, así:Expresión reemplazo mayúsculas regular en C#
input = Regex.Replace(input, @"(EQUIP:)(\S+)", @"<a title=""View equipment item $2"" href=""/EquipmentDisplay.asp?eqnum=$2"">$1$2</a>", RegexOptions.IgnoreCase);
El HTML termina pareciéndose a esto.
<a title="View equipment item 19d005" href="/EquipmentDisplay.asp?eqnum=19d005">EQUIP:19d005</a>
El único problema es que la página de destino espera que la cadena de consulta eqnum a estar en mayúsculas por lo que devuelve el equipo correcto cuando eqnum = 19D005 pero falla si recibe eqnum = 19d005.
Supongo que puedo modificar y corregir el requisito erróneo de valores en mayúsculas de EquipmentDisplay.asp; sin embargo, si es posible, me gustaría hacer que el código C# cumpla con la página ASP clásica existente al aplicar los $ 2 en la declaración Regex.Replace anterior .
Idealmente, me gustaría que el HTML devuelto a tener este aspecto:
<a title="View equipment item 19d005" href="/EquipmentDisplay.asp?eqnum=19D005">EQUIP:19d005</a>
Aviso aunque la cadena original era Equipar: 19d005 (en minúsculas), sólo el eqnum = valor es uppercased.
¿Se puede hacer y, de ser así, cuál es la forma más ordenada de hacerlo?
El one-liner es una solución muy elegante, que funcionó de maravilla por cierto. @Vinko menciona el uso de una función anónima pero no dio un ejemplo, por lo tanto, por qué elegí su solución. Estoy un poco confundido ya que he visto => usado para LINQ to SQL, árboles de expresiones y ahora funciones anónimas? ¿Por qué tantos usos? – Sprogz
La sintaxis de estilo => es una versión más corta de la sintaxis delegate() {}. Las otras ventajas son que si tiene un trazador de líneas como el anterior, no necesita una declaración de devolución y los tipos se deducen, así que solo especifico m en lugar de Match m. La sintaxis lambda ayuda a que el código sea más sucinto. – Duncan