C # Динамический Linq: строки считаются целыми числами?

Я думаю, что strsep по-прежнему является лучшим инструментом для этого:

while ((token = strsep(&str, ","))) my_fn(token);

Это буквально одна строка, которая разбивает строку.

Дополнительные круглые скобки являются стилистическим элементом чтобы указать, что мы намеренно проверяем результат присваивания, а не оператор равенства ==.

Для того, чтобы этот шаблон работал, token и str имеют тип char *. Если вы начали с строкового литерала, вы должны сначала сделать его копию:

// More general pattern:
const char *my_str_literal = "JAN,FEB,MAR";
char *token, *str, *tofree;

tofree = str = strdup(my_str_literal);  // We own str's memory now.
while ((token = strsep(&str, ","))) my_fn(token);
free(tofree);

Если два разделителя отображаются вместе в str, вы получите значение token это пустая строка. Значение str изменяется в том, что каждый встреченный разделитель перезаписывается нулевым байтом - еще одна веская причина для копирования первой строки, обрабатываемой первой.

В комментарии кто-то предположил, что strtok лучше чем strsep, потому что strtok более портативен. У Ubuntu и Mac OS X есть strsep; можно с уверенностью предположить, что и другие системы unixy. Windows не имеет strsep, но имеет strbrk, который позволяет эту короткую и сладкую замену strsep:

char *strsep(char **stringp, const char *delim) {
  if (*stringp == NULL) { return NULL; }
  char *token_start = *stringp;
  *stringp = strpbrk(token_start, delim);
  if (*stringp) {
    **stringp = '\0';
    (*stringp)++;
  }
  return token_start;
}

Здесь является хорошим объяснением strsep vs strtok. Плюсы и минусы можно судить субъективно; однако, я думаю, это говорит о том, что strsep был разработан как замена для strtok.

0
задан Tetsuya Yamamoto 17 January 2019 в 01:23
поделиться

1 ответ

Вам необходимо знать тип свойства и соответствующим образом отформатировать значение. Если это строка, заключите ее в двойные кавычки. то есть name = "John", но age = 20.

Это не зависит от того, выглядит ли значение как число или нет.

  • Если тип свойства является типом число , то значение также должно быть числом и не должно быть заключено в кавычки.
  • Если тип свойства представляет собой строку , то значение должно быть заключено в двойные кавычки, даже если значение является числом (например, code = "3").
0
ответ дан Olivier Jacot-Descombes 17 January 2019 в 01:23
поделиться
Другие вопросы по тегам:

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