J'ai vu ce question qui demande une chaîne "smith; rodgers; McCalne" comment pouvez-vous produire une collection. La réponse à ceci était d'utiliser String.Split.Quelles sont les alternatives à Split une chaîne dans C# qui n'utilisent pas String.Split()
Si nous n'avons pas Split() construit dans ce que vous faites à la place?
Mise à jour:
Je reconnais l'écriture d'une fonction de répartition est assez facile. Voici ce que j'aurais écrit. Boucle à travers la chaîne en utilisant IndexOf et extrait en utilisant Substring.
string s = "smith;rodgers;McCalne";
string seperator = ";";
int currentPosition = 0;
int lastPosition = 0;
List<string> values = new List<string>();
do
{
currentPosition = s.IndexOf(seperator, currentPosition + 1);
if (currentPosition == -1)
currentPosition = s.Length;
values.Add(s.Substring(lastPosition, currentPosition - lastPosition));
lastPosition = currentPosition+1;
} while (currentPosition < s.Length);
J'ai pris un coup d'oeil à la mise en œuvre et son SSCLI similaire à ce qui précède, sauf qu'il gère ainsi plus de cas d'utilisation et il utilise une méthode dangereuse pour déterminer les indices des séparateurs avant d'effectuer l'extraction de sous-chaînes.
D'autres ont suggéré ce qui suit.
- Une méthode d'extension qui utilise un bloc itérateur
- suggestion Regex (pas de mise en œuvre)
- Linq méthode globale
Est-ce cela?
Je ne comprends pas la question; n'est pas la réponse "écrire une méthode Split"? Ce n'est pas du tout une méthode difficile à écrire. –
Faisons-le sans IndexOf(). Bonus pour ne pas utiliser System.String du tout. –