The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"обработка строк, содержащих числа"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"обработка строк, содержащих числа"  
Сообщение от salikoff (ok) on 26-Апр-09, 19:35 
Здравстуйте. Передо мной стоит задача - обработать текст, вычленив из него числа, после чего произвести над этими числами арифметические операции и вставить назад.
Каким способом лучше всего это сделать? Можно ли мне обойтись одним лишь использованием регулярных выражений или тут еще что-нибудь понадобится? Просто вычленить числовые подстроки просто, но вот как их преобразовать в число? Посоветуйте наиболее простые варианты
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "обработка строк, содержащих числа"  
Сообщение от Vladin (ok) on 26-Апр-09, 23:42 
perl
он создан для обработки текста

например так

$text =~ s/(\d+)/myfunc($1)/sge;

и в myfunc колдовать с числом

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "обработка строк, содержащих числа"  
Сообщение от salikoff (ok) on 26-Апр-09, 23:50 
А существуют ли какие-нибудь текстовые редакторы, позволяющие это делать?
Просто я не знаком с perl, и изучение его синтаксиса не кажется мне самым
легким решением проблемы
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "обработка строк, содержащих числа"  
Сообщение от angra (ok) on 27-Апр-09, 12:23 
Сделать что? Прочитать ваши мысли и сделать как вам надо? Вы же на русском задачу не можете сформулировать, как вы собираетесь переделать ее в понятный для редактора набор действий?
Неужели изучение возможностей редактора занимает меньше времени, чем изучение минимального синтаксиса ЯП? Если не знаете перл, то воспользуйтесь языком который вам известен.

Пример умножения на два всех чисел из STDIN на perl
echo "asdasd 34 dfsdf 22" | perl -pe 's/(\d+)/$1*2/eg'
asdasd 68 dfsdf 44
Какой момент вызывает трудности? Неужели изучение операторов для арифметических действий?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "обработка строк, содержащих числа"  
Сообщение от Vladin (ok) on 27-Апр-09, 12:30 
легко

#!/usr/bin/perl

if ($#ARGV != 1) {
print "usage: $0 oldfile newfile\n";
exit;
}

$oldfile = $ARGV[0];
$newfile = $ARGV[1];

open(OF, $oldfile);
open(NF, ">$newfile");

while ($line = <OF>) {
    $line =~ s/(\d+)/myfunc($1)/sge;
    print NF $line;
}

close(OF);
close(NF);

sub myfunc() {
    $var = shift;
    return $var + 7;
}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру