[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to convert (concatenate) a string array to a string scalar?
In article <38CD6DA1.6E45DF18@astro.cornell.edu>,
J.D. Smith <jdsmith@astro.cornell.edu> wrote:
>David Fanning wrote:
>>
>> Alex Schuster (alex@pet.mpin-koeln.mpg.de) writes:
>>
>> > BEEEEEP! There's no need for that, here's a function which does what
>> > Kristian wants:
>> >
>> > function strconcat, numarray
>> > format = string( '(', n_elements( numarray ), '(I0,', '","))' )
>> > str = string( numarray, format=format )
>> > return, strmid( str, 0, strlen( str ) - 1 )
>> > end
>> >
>> > In the example above, the format string which is created inside the
>> > function would be '3(I0,",")' , which tells the STRING routine to take
>> > three integers and add them to the string without leading blanks, but
>> > with a comma between them. The last strmid call only removes the last
>> > comma from the string.
>>
>> I only know one thing for certain about IDL, and that
>> is this:
>>
>> There is an inverse correlation between how certain
>> I am that something can only be done one way in IDL
>> and the number of alternative methods I will learn
>> about in the next 15 minutes.
>>
>> :-(
>
>Obfuscated IDL Contest Entry:
>
>s=string((reform((tmp=byte(strtrim(a,2)+[replicate(",",n_elements(a)-1),""])),$
> n_elements(tmp)))[where(tmp ne 0)])
>
>
>Given integer array "a".
>
>JD
>
>--
> J.D. Smith |*| WORK: (607) 255-5842
> Cornell University Dept. of Astronomy |*| (607) 255-6263
> 304 Space Sciences Bldg. |*| FAX: (607) 255-5875
> Ithaca, NY 14853 |*|
Why not just use the format termination code:
s = string(a,format='('+strtrim(n_elements(a))+'(I0,:,","))')
(Coincidentally, I happened to need to do this this morning)
--
Mike Fitzgibbon MRFitz@ns.arizona.edu
UofAz, LPL phone:(520)626-4791
Systems Programmer, Pr. fax: (520)621-6783
Mars Surveyor '98: TEGA
Mars Orbiter 2001: GRS
--
--
Mike Fitzgibbon MRFitz@ns.arizona.edu
UofAz, LPL phone:(520)626-4791
Systems Programmer, Sr. fax: (520)621-6783