Чтобы получить элементы вместо элемента, вам необходимо:
Вместо Add
использовать ToList
вместо FirstOrDefault
и AddRange
.
Довольно легко удалить continue
из цикла. Что вам нужно, это два индекса в вашем цикле. Один для позиции в исходном массиве и один для позиции в массиве для копирования. Затем вы помещаете операцию копирования в оператор if, чтобы при отсутствии копии вы ничего не делали, чтобы перейти к следующей итерации. Это заставит вас выглядеть как
for (int source_index = 0, copy_index = 0; source_index < n; ++source_index) { // increment source_index always
if (!strchr(vowels,s[i])) {
// this isn't a vowel so copy and increment copy_index
afterElimination[copy_index++] = s[i];
}
// now this is the continue but we don't need to say it
}
Это типичный подход к фильтрации писем из заданной строки.
#include <string.h>
char s[20] = "something";
char no_vowels[20] = {0};
int i = 0;
int j = 0;
const char *vowels = "aeiou";
while (s[i]) {
if (!strchr(vowels, s[i])) {
no_vowels[j] = s[i];
j++;
}
i++;
}
Вот рабочий пример .