Difference between revisions of "Text manipulation with GAMAP"

From Geos-chem
Jump to: navigation, search
(Replacing characters in a string)
Line 1: Line 1:
== Strings and bytes ==
+
== Text strings in IDL ==
 +
 
 +
=== Creating strings ===
 +
 
 +
We may form a string of text characters in IDL either with the IDL's string function, or by placing the text between single quotes or double quotes.  For example:
 +
 
 +
IDL> str1 = 'hello world'
 +
IDL> help, str1
 +
STR1            STRING    = 'hello world'
 +
 
 +
IDL> num2 = 3.14159
 +
IDL> str2 = string( num2 ) 
 +
IDL> help, str2 
 +
STR2            STRING    = '      3.14159'
 +
 
 +
=== Strings and bytes ===
  
 
In IDL, a string of text characters is equivalent to an array of byte values.  A byte is a collection of 8 bits and may express values from 0-255.  The [http://www.asciitable.com/ ASCII collating sequence] has 255 values.  (Actually, the original ASCII table had 128 values, but this was later extended to 255 values to include special characters.)  One byte represents a single text character.
 
In IDL, a string of text characters is equivalent to an array of byte values.  A byte is a collection of 8 bits and may express values from 0-255.  The [http://www.asciitable.com/ ASCII collating sequence] has 255 values.  (Actually, the original ASCII table had 128 values, but this was later extended to 255 values to include special characters.)  One byte represents a single text character.
Line 21: Line 36:
  
 
Note that we used IDL's STRLEN function to return the length of the string.   
 
Note that we used IDL's STRLEN function to return the length of the string.   
 +
 +
=== Special characters ===
 +
 +
Also, we must specify some special non-printing ASCII characters with their byte value.  For exaaple, the horizontal tab character is the 9th character in the ASCII table, so we may specify that as:
 +
 +
IDL> tab = 9B
 +
IDL> help, tab
 +
TAB            BYTE      =    9
 +
IDL> str = 'hello' + string(tab) + 'world'
 +
IDL> print, str
 +
hello  world
  
 
For more information about IDL's string functions, please see [http://idlastro.gsfc.nasa.gov/idl_html_help/Strings.html http://idlastro.gsfc.nasa.gov/idl_html_help/Strings.html.]
 
For more information about IDL's string functions, please see [http://idlastro.gsfc.nasa.gov/idl_html_help/Strings.html http://idlastro.gsfc.nasa.gov/idl_html_help/Strings.html.]

Revision as of 19:44, 15 April 2008

Text strings in IDL

Creating strings

We may form a string of text characters in IDL either with the IDL's string function, or by placing the text between single quotes or double quotes. For example:

IDL> str1 = 'hello world'
IDL> help, str1
STR1            STRING    = 'hello world'
 
IDL> num2 = 3.14159
IDL> str2 = string( num2 )   
IDL> help, str2  
STR2            STRING    = '      3.14159'

Strings and bytes

In IDL, a string of text characters is equivalent to an array of byte values. A byte is a collection of 8 bits and may express values from 0-255. The ASCII collating sequence has 255 values. (Actually, the original ASCII table had 128 values, but this was later extended to 255 values to include special characters.) One byte represents a single text character.

This means that it is easy to convert between strings and bytes. If you have an array of bytes, you can use any of the IDL string routines on them, for example:

IDL> byte_array = [ 72B, 69B, 76B, 76B, 79B ]
IDL> help, byte_array    
BYTE_ARRAY      BYTE      = Array[5]
IDL> print, strtrim( byte_array, 2 ) 
HELLO

GAMAP comes with a very useful routine called str2byte.pro. This allows you to take a text string and to convert it into the equivalent array of bytes.

IDL> str = 'IDL is neat!'
IDL> byte_array = str2byte( str, strlen( str ) )
IDL> help, byte_array
BYTE_ARRAY      BYTE      = Array[12]
IDL> print, byte_array   
  73  68  76  32 105 115  32 110 101  97 116  33

Note that we used IDL's STRLEN function to return the length of the string.

Special characters

Also, we must specify some special non-printing ASCII characters with their byte value. For exaaple, the horizontal tab character is the 9th character in the ASCII table, so we may specify that as:

IDL> tab = 9B
IDL> help, tab
TAB             BYTE      =    9
IDL> str = 'hello' + string(tab) + 'world' 
IDL> print, str
hello   world

For more information about IDL's string functions, please see http://idlastro.gsfc.nasa.gov/idl_html_help/Strings.html.

Replacing characters in a string

IDL's STRPUT function is one way to insert characters into a string of text:


However,

Testing