Subject: Re: How to calculate Character Position in String From: Brandon Ibach <bibach@xxxxxxxxxxxxxx> Date: Mon, 5 Jun 2000 21:12:43 -0500 |
Quoting Roland Schopf <Roland.Schopf@xxxxxxxxxxx>: > I have the follwing sgml: > <table tabid="doc.123.T456"><title>Table Title Text</title>...</table> > > and I want to generate somthing like: > <P>Table 456: Table Title Text</P> > > My only problem now is, how to get the position of the last dot, in order to > cut the attribute-string with the substring function. > Here's a function that should be helpful. It is based on Norm Walsh's (find-first-char) function, which can be found in the DSSSL Procedure Library at: http://www.mulberrytech.com/dsssl/dsssldoc/procedures/index.html The comments describe how it works, but in your case, you should be able to get the value you want with something like: (let ((tabid (attribute-string "tabid" (current-node)))) (substring tabid (find-char tabid "." -1 -1) (string-length tabid))) or: (let* ((tabid (attribute-string "tabid" (current-node))) (period (find-char tabid "." -1 -1)) (dig "123456789")) (substring tabid (find-char tabid dig period) (string-length tabid))) -Brandon :) ;; Finds nth character in string that is in chars (or not in chars, ;; if skip is true). If n is negative, searches backwards. Search ;; begins at pos. If pos is unspecified, search begins at start for ;; positive n, or end for negative n. A negative value for pos begins ;; the search at the (-pos)th character from the end of the string. ;; If no such characters are found, returns -1. ;; (define (find-char string chars #!optional (pos #f) (n 1) (skip #f)) (let ((len (string-length string)) (sp (or pos (if (< n 0) -1 0))) (dir (if (< n 0) -1 1)) (clist (string->list chars))) (let loop ((p (if (< sp 0) (+ len sp) sp)) (o (abs n))) (if (or (>= p len) (< p 0)) -1 (let ((found (member (string-ref string p) clist))) (if (if skip found (not found)) (loop (+ p dir) o) (if (< o 2) p (loop (+ p dir) (- o 1))))))))) DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
How to calculate Character Position, Roland Schopf | Thread | AW: How to calculate Character Posi, Roland Schopf |
How to calculate Character Position, Roland Schopf | Date | RE: <![cdata[, Pieter Rijken |
Month |