2 Nicholas: парсить строку

Обсуждение программ nnCron и nnCron LITE

2 Nicholas: парсить строку

Postby Valery_Kondakoff » Tue, 28 Sep 2004, 21:24

Николас, пытаюсь помочь пользователю со скриптом, в котором надо парсить строку из файла с датой и именем. Попытался пойти по примеру задачи 'birthdays' из example.tab, но проблема в том, что числа отделены друг от друга не пробелом, а другим символом (дефисом). Вот строка с пробелами:

01 02 0000 Rorie Stucchi

Вот код, который ее успешно парсит:

Code: Select all
  birthdays.txt R/O OPEN-FILE-SHARED IF DROP ERR-MSG: "Can't open %birthdays.txt% file" EXIT THEN fb !
  BEGIN bline 250 fb @ READ-LINE THROW WHILE
    bline SWAP
    <TIB
       get-number
       get-number
       get-number
       1 WORD COUNT 63 MIN bname PLACE
       MSG: "name = %bname COUNT%"
    TIB>
  REPEAT
  DROP
  fb @ CLOSE-FILE DROP


А как правильно пропарсить строку с дефисами вместо пробелов? Скажем:

01-02-0000 Rorie Stucchi

Можно, наверное, так:

Code: Select all
      [CHAR] - WORD COUNT dmonth PLACE
      [CHAR] - WORD COUNT dday PLACE
      BL WORD COUNT dyear PLACE
      BL SKIP
      1 WORD COUNT 63 MIN bname PLACE
       MSG: "%dday COUNT%:%dmonth COUNT%:%dyear COUNT% - %bname COUNT%"


Но мне кажется, что у тебя "припасен" элегантный способ. :) Подскажешь?

Спасибо!
CU
VK
User avatar
Valery_Kondakoff
Site Admin
 
Posts: 769
Joined: Thu, 01 Jul 2004, 20:49
Location: Moscow, Russia

Postby Nicholas_Nemtsev » Wed, 29 Sep 2004, 12:35

Если в строке только числа и именно эти числа и нужны, то просто пропарсить при помощи >NUMBER
Code: Select all
0. get-string
>NUMBER 2SWAP D>S x1 !
1 /STRING >NUMBER 2SWAP D>S x2 !
1 /STRING >NUMBER 2SWAP D>S x3 !

Но этот способ ничуть не элегантней.
А тот, что ты предложил, по моему, минимален. Можно только слово выделить
Code: Select all
: word-2-dash [CHAR] - WORD COUNT ;
Nicholas Nemtsev
User avatar
Nicholas_Nemtsev
Site Admin
 
Posts: 857
Joined: Thu, 01 Jul 2004, 22:25
Location: Псков

Postby VK » Wed, 29 Sep 2004, 14:32

угу. понял, спасибо!
CU
VK
User avatar
VK
 
Posts: 680
Joined: Wed, 14 Jul 2004, 19:17


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron