[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

string manipulation




I have been thinking about the following problem, but have been pretty
frustrated.

I have input keyword/value strings of the following form.  People may
recognize this from a FITS file.

TTYPE2  = 'X1LSpecPcu0'        / X1LSpecPcu0 : Histogram
TUNIT2  = 'count   '
1CTYP2  = 'CHANNEL '
1CPIX2  = '0~4,5:53,(54~135;2),(136~237;3),(238~249;4),250~255'
12CD2A  = 1.25
^name^^   ^value^^^^^^^

All of the keyword names have a trailing "2" which indicates that they
are describing column number 2 in a FITS table.  Note that in the name
"12CD2A", only the *final* 2 refers to the column number.

The interesting question happens when I want to change the column
number, say from "2" to "50".  Is there a straightforward way to do
this in "vectoral" sort of way?

I am able to find the string positions of the 2's, so that's not
really a problem.  I do this by making a byte array of the strings,
and blanking out any alphabetic characters and any leading numeric
characters.  Here I appreciate STRPOS is (partially) vectorized.

However, when it comes to resubstituting the "50" back in, that's when
I get stymied.  This is primarily because STRMID and STRPUT are not
vectorized at all.  Well STRMID *is* vectorized, but not with a sane
behavior.  For example, what I'd like to do is:

NEWKEY = STRMID(KEY,0,P1) + '50' + STRMID(KEY,P2,100)

Where KEY, P1, and P2 are vectors.  Obviously this doesn't work.  Any
ideas?

Craig


-- 
--------------------------------------------------------------------------
Craig B. Markwardt, Ph.D.         EMAIL:    craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
--------------------------------------------------------------------------