J'essaie d'écrire une fonction en ligne pour les occurrences de comptage d'un mot dans une chaîne en utilisant des expressions lambda récursivement.Tout suggérer de stocker une valeur dans une expression lambda
La fonction:
Func<string, string, int> getOccurrences = null;
getOccurrences = (text, searchTerm) =>
text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) == -1
? 0
: getOccurrences(
text.Substring(
text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase)
+ searchTerm.Length),
searchTerm) + 1;
Le problème est que je suis deux fois appel méthode IndexOf
, Le premier est pour la condition de rupture récursive et le second est d'obtenir la valeur pour l'ajouter.
Y at-il une suggestion pour l'appeler une fois?
Merci d'avance.
Cela ne fonctionnerait-il pas simplement d'utiliser une regex pour cela, peut-être quelque chose comme \ b (search_term) \ b. Est-ce que je manque quelque chose? –
Est-ce un exercice? Est-ce que vous essayez de faire autre chose, et c'est un échantillon non représentatif? Voulez-vous l'utiliser dans le code de production? – outis
Si ce n'est déjà fait, donnez une lecture à ["Expressions lambda récursives"] (http://blogs.msdn.com/b/madst/archive/2007/05/11/recursive-lambda-expressions.aspx). – outis