Ho bisogno di rimuovere la prima (e SOLO la prima) occorrenza di una stringa da un'altra stringa.C# - Il modo più semplice per rimuovere la prima occorrenza di una sottostringa da un'altra stringa
Ecco un esempio che sostituisce la stringa "\\Iteration"
. Questo:
ProjectName\\Iteration\\Release1\\Iteration1
sarebbe diventato questo:
ProjectName\\Release1\\Iteration1
Ecco un codice che fa questo:
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;
che sembra un sacco di codice.
Quindi la mia domanda è questa: c'è un modo più pulito/più leggibile/più conciso per farlo?
Questa risposta potrebbe interrompersi per stringhe che coinvolgono caratteri non ASCII. Ad esempio, sotto la cultura en-US, 'æ' e' ae' sono considerati uguali. Il tentativo di rimuovere 'paedia' da' Encyclopædia' genererà un 'ArgumentOutOfRangeException', poiché stai tentando di rimuovere 6 caratteri quando la sottostringa corrispondente contiene solo 5. – Douglas
Possiamo modificarlo in questo modo:' sourceString.IndexOf (removeString, StringComparison. Ordinale) 'per evitare l'eccezione. –