Как разбить предложение на слова c
Перейти к содержимому

Как разбить предложение на слова c

  • автор:

Как разбить строку на слова и записать в масив

Не могу разобраться как разбить строку на слова и сохранить в массив как отдельные слова в языке Си. Пробую через strtok, но к сожалению отделает только первое слово. upd. Получаю от пользователя строку и записываю в массив Пример: input = cd .. argc[0] = cd argc[1] = .. Вот код:

char split(char *commadnForSpilt) < //FIX to strtok int i = 0; char *p = strtok (commadnForSpilt, " "); char *array[3]; while (p != NULL) < array[i++] = p; p = strtok (NULL, " "); >for (i = 0; i

Как разбить предложение на слова в PHP

Чтобы разбить строку на отдельные слова, можно использовать PHP функцией – strtok( $str, $token ) . Она принимает два параметра: строку и символы, по которым строка будет разбиваться на части.

strtok() разбивает строку $str на подстроки (токены), используя в качестве разделителей символы из $token .

Например, строку «Это примерная строка» можно разбить на отдельные слова используя пробел в качестве разделителя.

$string = "Бог наградил в нем слог и ум покорный, Стал Моисей известный господин. "; // В качестве разделителей используем пробел, табуляцию и перевод строки $tok = strtok( $string, " nt"); while ( $tok !== false ) < echo "word = $tokn"; $tok = strtok(" nt"); >/* Word = Бог Word = наградил Word = в Word = нем Word = слог Word = и Word = ум Word = покорный, Word = Стал Word = Моисей Word = известный Word = господин. */

Заметьте, что исходная строка передается только при первом вызове strtok() . Последующим вызовам передаются только разделители, так как эта функция сохраняет исходную строку и запоминает позицию в этой строке между вызовами. Для работы с новой строкой нужно снова вызвать функцию с двумя аргументами.

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

Tamkovich.com: Телеком/VoIP блог

Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys

Рубрики

Метки

Мета

Комментарии

    rius (2020-08-12 13:04): К примеру, тут http://vbp.maxnet.ru/files и https://www.thingiverse.com/ri us/designs или связаться со мной —.
    Dmitry (2019-04-30 19:08): В статье описано только то, что сделать для попадания сообщений о флуде в лог, но ведь нужно еще fail2ban на эти.
    Синхронист (2019-04-26 20:08): А где можно скачать готовые файлы для заливки в ЧПУ?
    Александр (2018-02-12 11:18): TDA5145 — это очень плохая микросхема сама по себе, и тем более, когда её пытаются использовать для моторчиков.
    Маэстро (2017-04-27 06:41): это не просто телек а чюдо ! шедевр технологий ! и сама фирма ( но если SONY теперь или на будущие начнет халтурить и.
    Джон Смит (2017-01-14 11:25): Здравствуйте, много лет прошло с написания этой статьи, но и по сей день она не потеряла актуальности, спасибо Вам.
    Simplew (2016-09-02 18:52): > А если нужно провести 10 тысяч регистраций в 4 потока, какие нужны опции? xml под это дело есть, а вот опции.
    techbird (2016-06-28 22:20): как вариант,залогиниться(root) по ssh к своему серверу набрать echo ’12 2 * * * root find /http/image/cache.
    Alexey (2016-06-10 19:41): Тут кто то еще этим занимается? Сейчас пытаюсь разобраться с данной темой но чет на такие подводные камни натыкаюсь(
    Den (2016-05-31 01:25): http://youtu.be/qIqfAQV-hCU тут самый простой способ пуска движка hdd от батарейки на простом мк

Как разделить строку в Си

19 февраля, 2010 by Сергей Тамкович

Разделение строки на элементы — стандартная задача при обработке текста. Многие высокоуровневые языки предоставляют удобные операторы для решения этой задачи. Например язык Perl позволяет разбить строку используя в качестве разделителя другую строку или регулярное выражение с помощью функции split. Результат разбиения возвращается в виде массива:

@elements = split(/\s/, "very simple example");

В PHP аналогичную роль выполняют функции explode (для деления по текстовому разделителю) и preg_split для деления по регулярному выражению:

$elements1 = explode(" ", "very simple example"); $elements2 = preg_split("/[\s,]+/", "very simple example");

В Си разделение строки несколько сложнее. Многие программисты, в цикле, ищут разделители с помощью таких функций как index или strstr, а затем меняют его на нулевой байт. Данный подход — громоздкий и неудобный. Гораздо проще воспользоваться функцией strtok. Функция strtok позволяет разбить текстовую строку на токены, используя указанные разделители. Пример использования strtok:

/* strtok usage example */ #include #include void main () { char str[] = "Very simple example,test"; char *token, *last; printf ("Splitting string \"%s\" into tokens:\n", str); token = strtok_r(str, " ,", &last); while (token != NULL) { printf ("%s\n", token); token = strtok_r(NULL, " ,.-", &last); } }

Почему strtok_r, а не strtok и что за третий параметр &last? Функция strtok_r является потоко-безопасной (thread-safe) аналогом функции strtok, третий параметр (**lasts) используется для сохранения текущего положения в оригинальной строке. Поскольку сегодня многопоточные приложения стали нормой, рекомендую использовать именно strtok_r().

char * strtok_r(char *newstring, const char *delimiters, char **save_ptr)

Функция strtok_r работает следующем образом: В случае если переданный указатель newstring отличен от NULL, считается что передана строка (последовательность ненулевых байт завершающаяся нулевым). При первом вызове функции strtok_r, значение сохранённое в save_ptr — игнорируется. Функция strtok_r, находит в строке newstring первый из разделителей, заменяет его на нулевой байт (‘\0’), сохраняет позицию, следующую за нулевым байтом в save_ptr, и возвращает указатель на найденный токен (для первого вызова функции, указатель на найденный токен будет совпадать с указателем на начало строки). Последующие вызовы выглядят следующим образом:

token = strtok_r(NULL, " ,.-", &last);

В случае, если указатель newstring равен NULL, обработка строки начинается с указателя сохранённого в save_ptr, в остальном, алгоритм идентичен первому вызову функции.

Похожие статьи

  • indent — форматирование Си файлов
  • MinGW + QT + Eclipse
  • Как писать неподдерживаемый код, застрахуй свою работу 🙂

Как разделить строку по пробелам python

Такую задачу всегда можно решить с помощью цикла. Но в Python есть метод .split() . Именно его обычно используют для разделения строки на части. В качестве разделителя можно использовать любой символ: пробел, запятую, перенос строки ( \n ) и т.д.

На выходе мы получим список строк:

str = 'how are you' str.split(' ') # ['how', 'are', 'you'] 

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

str = 'how are you?' str.split() # ['how', 'are', 'you'] 

Иногда перед тем, как разделить строку, необходимо избавиться от лишних знаков препинания:

str = 'Hi, how are you?' str[:-1].replace(',', '').split() # ['Hi', 'how', 'are', 'you'] 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *