Necesito eliminar la primera (y SOLO la primera) ocurrencia de una cadena de otra cadena.C# - La manera más sencilla de eliminar la primera aparición de una subcadena de otra cadena
Aquí hay un ejemplo que reemplaza la cadena "\\Iteration"
. Este:
ProjectName\\Iteration\\Release1\\Iteration1
se convertiría en esto:
ProjectName\\Release1\\Iteration1
Aquí algo de código que hace esto:
const string removeString = "\\Iteration";
int index = sourceString.IndexOf(removeString);
int length = removeString.Length;
String startOfString = sourceString.Substring(0, index);
String endOfString = sourceString.Substring(index + length);
String cleanPath = startOfString + endOfString;
Eso parece como una gran cantidad de código.
Así que mi pregunta es esta: ¿hay una manera más clara/más legible/más concisa para hacer esto?
Esta respuesta puede fallar para cadenas que involucren caracteres que no sean ASCII. Por ejemplo, bajo la cultura en-US, 'æ' y' ae' se consideran iguales. Intentar eliminar 'paedia' de' Encyclopædia' arrojará una 'ArgumentOutOfRangeException', ya que está intentando eliminar 6 caracteres cuando la subcadena coincidente solo contiene 5. – Douglas
Podemos modificarlo de esta manera:' sourceString.IndexOf (removeString, StringComparison. Ordinal) 'para evitar la excepción. –