In C # se voglio dividere un string
da un altro string
devo fare qualcosa del genere:
testString.Split(new string[] { "anotherString" }, StringSplitOptions.None);
Dalla sovraccarica String.Split
documentazione MSDN possiamo vedere l'implementazione e perché una tale chiamata deve essere effettuata.
Proveniente da Python , è difficile per me capire correttamente perché sia necessaria una simile chiamata. Voglio dire che avrei potuto usare Regex.Split
per ottenere una sintassi simile all'implementazione di Python, ma avrei dovuto farlo a costo di prestazioni inferiori (tempo di installazione) per qualsiasi cosa semplice .
Quindi in sostanza, la mia domanda è: perché diavolo non possiamo semplicemente fare:
testString.Split("anotherString");
Si noti che non sto suggerendo alcun prototipo né implementazione. Capisco perché non è possibile implementare la versione precedente considerando l'API corrente. Il mio obiettivo era capire perché una simile API avrebbe potuto essere creata considerando i vantaggi che porta la sintassi di cui sopra. A partire da ora, la flessibilità sembra essere l'obiettivo della corrente String.Split
che ha senso, ma ad essere sincero, ho davvero pensato che ci fosse una sorta di guadagno in termini di prestazioni da qualche parte. Immagino di aver sbagliato.
testString.Split(",.;");
e testString.Split(new Char [] {',', '.', ';',);
che non sono la stessa cosa.
IEnumerable<char>
così il prototipo aggiuntivo che stai suggerendo potrebbe apparire ambiguo in alcuni casi (delimiti dall'intera stringa o delimitando da ciascuno dei suoi caratteri?) Solo un'ipotesi.
testString.Split("anotherString");
, sono abbastanza fiducioso di dire che il comportamento previsto era delimitare l'intera stringa ( anotherString
in questo caso).