J'ai besoin d'obtenir toutes les substrings de la chaîne. qui renvoie 2 chaîne "AAAAAA" et "CCCCCC"
Supposons que nous n'avons qu'un seul niveau de nidification.
Pas sûr de Regexp, mais je pense que ce sera utile. P> p>
Pour ex:
5 Réponses :
private IEnumerable<string> GetSubStrings(string input, string start, string end)
{
Regex r = new Regex(Regex.Escape(start) + "(.*?)" + Regex.Escape(end));
MatchCollection matches = r.Matches(input);
foreach (Match match in matches)
yield return match.Groups[1].Value;
}
Il doit être trivial pour envelopper le code ci-dessus dans une fonction appropriée pour vos besoins. P> P>
Vous pouvez utiliser une expression régulière, mais n'oubliez pas d'appeler REGEX.ESCAPE sur vos arguments:
public static IEnumerable<string> GetSubStrings(
string text,
string start,
string end)
{
string regex = string.Format("{0}(.*?){1}",
Regex.Escape(start),
Regex.Escape(end));
return Regex.Matches(text, regex, RegexOptions.Singleline)
.Cast<Match>()
.Select(match => match.Groups[1].Value);
}
Voici une solution qui n'utilise pas d'expressions régulières et ne prend pas en compte.
Je m'ennuyais et j'ai donc fait un micro-repère inutile qui "prouve" (sur mon ensemble de données, qui a des chaînes jusqu'à 7k de caractères et résultats (1000000 itérations * 20 cas de test): p> code> étiquettes pour les paramètres de début / de fin) Ma suspicion que la solution de juhar em> est la plus rapide des trois résultats globaux.
juharr: 6371ms
Jake: 6825ms
Mark Byers: 82063ms
1 Niveau de nidification signifie
[Démarrer] xxx [Démarrer] aaaa [fin] zzz [fin] code> est possible?Si vous faites cela pour analyser HTML ou XML, il y a de meilleures façons ...