Итак, у меня есть этот код на C #:
static void Main(string[] args)
{
string @string = "- hello dude! - oh hell yeah hey what's up guy";
Console.WriteLine(String.Join(".", @string.GetSubstringsIndexes("he")));
Console.Read();
}
частичный класс, который добавляет метод расширения GetSubstringsIndexes:
partial class StringExtension
{
public static int[] GetSubstringsIndexes(this string @string, string substring)
{
List<int> indexes = new List<int>(@string.Length / substring.Length);
int result = @string.IndexOf(substring, 0);
while (result >= 0)
{
indexes.Add(result);
result = @string.IndexOf(substring, result + substring.Length);
}
return indexes.ToArray();
}
}
То, что я хотел бы, чтобы это было,лямбда-выражение в скобках параметров метода String.Join вместо вызова функции, которую я написал.
Я имею в виду, я бы просто хотел не писать эту функцию и затем вызывать ее, а написать лямбда-выражение виспользуйте только один раз!
Пример того, как я хотел бы, чтобы это выглядело так:
static void Main(string[] args)
{
string @string = "- hello dude! - oh hell yeah hey what's up guy";
Console.WriteLine(String.Join(".", () => {List<int> ind = new List<int>()..... AND SO ON...} ));
Console.Read();
}
Ну, на самом деле, я только что понял (при написании этого вопроса), что для такого родаВ ситуации это не нужно, потому что мой метод GetSubStringsIndexes слишком велик.Но представьте, если бы оно было коротким.
Просто скажите мне, возможно ли сделать что-то подобное, и если это возможно, пожалуйста, скажите мне, как!
Редактировать:
Я сделал это, и вот как это выглядит:
Console.WriteLine(String.Join(".", ((Func<int[]>)
( () =>
{
List<int> indx = new List<int>();
int res = @string.IndexOf("he", 0);
while (res >= 0)
{
indx.Add(res);
res = @string.IndexOf("he", res + "he".Length);
}
return indx.ToArray();
}
))()));