Найти текст в диапазоне, используя EPPlus

Еще один ответ (здесь он был перенесен сюда из здесь ):

Попробуйте использовать функцию strtok:

см. подробности в этом разделе здесь или здесь

Проблема здесь в том, что вам нужно немедленно обработать words. Если вы хотите сохранить его в массиве, вы должны выделить correct size, потому что он неизвестен.

Так например:

char **Split(char *in_text, char *in_sep)
{
    char **ret = NULL;
    int count = 0;
    char *tmp = strdup(in_text);
    char *pos = tmp;

    // This is the pass ONE: we count 
    while ((pos = strtok(pos, in_sep)) != NULL)
    {
        count++;
        pos = NULL;
    }

    // NOTE: the function strtok changes the content of the string! So we free and duplicate it again! 
    free(tmp);
    pos = tmp = strdup(in_text);

    // We create a NULL terminated array hence the +1
    ret = calloc(count+1, sizeof(char*));
    // TODO: You have to test the `ret` for NULL here

    // This is the pass TWO: we store
    count = 0;
    while ((pos = strtok(pos, in_sep)) != NULL)
    {
        ret[count] = strdup(pos);
        count++;
        pos = NULL;
    }
    free(tmp);

    return count;
}

// Use this to free
void Free_Array(char** in_array)
{
    char *pos = in_array;

    while (pos[0] != NULL)
    {
        free(pos[0]);
        pos++;

    }

    free(in_array);

}

Примечание: Мы используем тот же цикл и функцию для вычисления счетчиков (передать один) и для создания копий (передать два), чтобы избежать проблем с распределением.

Примечание 2: Вы можете использовать некоторую другую реализацию strtok причин, упомянутых в отдельных сообщениях.

Вы можете использовать это как:

int main(void)
{
  char **array = Split("Hello World!", " ");
  // Now you have the array
  // ...

  // Then free the memory
  Free_Array(array);
  array = NULL;
  return 0;
}

(я не тестировал его, поэтому, пожалуйста, дайте мне знать, если он не работает!) [/ ​​g11]

0
задан Melipao 16 January 2019 в 21:13
поделиться

1 ответ

Я исправил свою проблему следующим образом:

Dim Row as object = From cell In ws.SelectedRange("A1:B64")
                    Where cell.Value <> Nothing AndAlso cell.Value.ToString().Equals("any text")
                    Select cell.Start.Row
0
ответ дан Melipao 16 January 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: