En C # si je veux diviser un string
par un autre, string
je dois faire quelque chose comme ça:
testString.Split(new string[] { "anotherString" }, StringSplitOptions.None);
De la String.Split
documentation MSDN surchargée, nous pouvons voir la mise en œuvre et pourquoi un tel appel doit être effectué.
Venant de Python , il m'est difficile de comprendre correctement pourquoi un tel appel est nécessaire. Je veux dire que je pourrais utiliser Regex.Split
pour obtenir une syntaxe similaire à celle de l'implémentation de Python, mais je devrais le faire au prix de moins de performances (temps de configuration) pour quelque chose de simple .
Donc, fondamentalement, ma question est pourquoi diable ne pouvons-nous pas simplement faire:
testString.Split("anotherString");
Notez que je ne suggère aucun prototype ni implémentation. Je comprends pourquoi vous n'avez pas pu implémenter la version ci-dessus compte tenu de l'API actuelle. Mon objectif était de comprendre pourquoi une telle API aurait pu être créée compte tenu de l'avantage que la syntaxe ci-dessus apporte. À l'heure actuelle, la flexibilité semble être l'objectif du courant String.Split
qui a du sens, mais pour être honnête, je pensais vraiment qu'il y avait une sorte de gain de performances quelque part. Je suppose que j'avais tort.
testString.Split(",.;");
et testString.Split(new Char [] {',', '.', ';',);
qui ne sont pas la même chose.
IEnumerable<char>
afin que le prototype supplémentaire que vous proposez puisse apparaître ambigu dans certains cas (délimitez-vous par la chaîne entière ou par chacun de ses caractères?) Juste une supposition.
testString.Split("anotherString");
, je suis assez confiant pour dire que le comportement attendu était de délimiter sur toute la chaîne ( anotherString
dans ce cas).