第一个racket程序:获得字符串中的数字

#! /usr/bin/env racket
#lang racket
#|
  NAME:
     getModelNumber.rkt
     This program is used to get model number based on the
     input model file name.
  USAGE:
     ./getModelNumber.rkt modelfilename
  EXAMPLE:
     ./getModelNumber.rkt gitst22.mat
  OUTPUT:
     22
|#

;; deal with the arguments
(define verbose? (make-parameter #f))
(define fileformat? (make-parameter #f))
(define argslist 
  (command-line
   #:usage-help
   "Get model number based on the filename."
   #:once-each        
   [("-v" "--verbose") "Verbose mode" (verbose? #t)]
   #:args
   (filename [format ".mat"]) (list filename format)))

;; define indicator
(define number -1)
(define filename (list-ref argslist 0))
(define format (list-ref argslist 1))

;; check the filename format is legal.
(if (regexp-match? (string-append format "$") filename)
    (fileformat? #t)
    (when (verbose?)
      (display "Filename must be end format of .mat \n")));

;; get the model number
(define getNumber
  (lambda (filename)
    (regexp-match #px"\\d+" filename)))

(when (and (getNumber filename)
           (fileformat?))
  (set! number
        (string->number (list-ref (getNumber filename) 0))))

number    ; return number value.

运行如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值