Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как обойти каждое слово в строке?

Колледж ВКЭиК Профи (529), на голосовании 1 год назад
У меня есть некий код на псевдоязыке, я считал его из файла на php и записал всё содержимое в строку. Теперь мне нужен такой подход(алгоритм), которым я смогу обойти НЕ каждый символ в строке, а КАЖДОЕ отдельное "слово"(условно конечно), разделённое пробелом. В строке так же есть "переносы строк"(символ перевода каретки).

В php есть функция preg_replace_callback(), так вот я хочу чтобы я мог делать что-то каждый раз, когда нахожу новое вхождение, до тех пор пока не обойду всю строку.

В качестве примера, используйте любой фрагмент кода на С-подобном языке.

P.S.: Пока сделал так:
 preg_replace_callback('~(\S+)~', function($m) 
{
echo var_export($m[1]).'
';
}, $Code);
Но вы всё ещё можете улучшить это как-то.
Дополнен 1 год назад
Похоже, что я не единственный кто делал нечто подобное:
https://stackoverflow.com/questions/50894957/get-offset-from-preg-replace-callback

Я уже получил то что хотел:
$position = 0;
preg_replace_callback('~(\S+)~', function(array $match) use ($Code, &$position)
{
$offset = strpos($Code, $match[0], $position);
$position = $offset + strlen($match[0]);
$line = substr_count($Code, "\n", 0, $position)+1;
echo $position.'|'.$line.'|'.$match[1].'
';
}, $Code);
Голосование за лучший ответ
Саня Семенов Оракул (60497) 1 год назад
 \b - граница  слова  ищет  позицию   где  заканчивается  слово и начинается  пробел пунктуация и т п   оно   кажется  подходит но иногда    так находятся лишние   элементы  вроде скобок   так  что пробуй   
Похожие вопросы