Re: String manipulation

From: Saji N Hameed <saji_at_nyahnyahspammersnyahnyah>
Date: Thu Nov 05 2009 - 21:30:38 MST

Hi Oliver,

Attached are my scripts that hopefully does what you want. There is
also a string chopper.

 print(chop(chop(chop(chop("Oliver "))))))
 ==> "Oli"

saji

function chop(astring)
begin
  chr_str=stringtochar(astring)
  nchr=dimsizes(chr_str)
  if nchr.le.2
    return(astring)
  end if
  return(chartostring(chr_str(:nchr-3)))
end

function array_to_string(var_arr)
begin
 dims=dimsizes(var_arr)
 rank=dimsizes(dims)
   if rank.gt.1
     print("This function is for 1-D arrays")
     exit
   end if
  var_str=""
  if isatt(var_arr,"join")
    spc=var_arr@join
  else
    spc=""
  end if

  do i = 0,dims-2
    var_str=var_str+var_arr(i)+spc
  end do
  var_str=var_str+var_arr(dims-1)
return(var_str)
end

function string_to_array(str)
begin
  if .not.isatt(str,"separator")
    str@separator=","
    cmd="echo "+str+" | tr [:blank:] ',' "
    str=systemfunc(cmd)
  end if
  nstr=systemfunc("echo "+str+" | tr "+str@separator+" \\n | wc -l")
  istr=stringtoint(nstr)
  str_arr=new((/istr/),"string")

  do i = 0, istr-1
    CMD="echo "+str+" | awk -F"
    CMD=CMD+str@separator+" '{print $"+(i+1)+"}'"
    str_arr(i)=systemfunc(CMD)
  end do
  return(str_arr)
end

function str_split(str,splitter)
; till we have string split in NCL
begin
  str@separator=splitter
  return(string_to_array(str))
end

function str_join(str_arr,joiner)
; till we have string join in NCL
begin
  str_arr@join=joiner
  return(string_to_array(str_arr))
end

* Oliver.Fuhrer@meteoswiss.ch <Oliver.Fuhrer@meteoswiss.ch> [2009-11-05 21:40:10 +0100]:

> Hi ncl-talk,
>
> I would be interested in using the new string manipulation functions (str_split, str_join, etc.). Are these based on NCL scripts and thus could they already be used in the current version of NCL?
>
> Thanks a lot,
> Oliver
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>

-- 
Saji N. Hameed
APEC Climate Center          				
1463 U-dong, Haeundae-gu,                               +82 51 745 3951
BUSAN 612-020, KOREA                    		saji@apcc21.net
Fax: +82-51-745-3999
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Nov 5 21:30:05 2009

This archive was generated by hypermail 2.1.8 : Sun Nov 08 2009 - 22:22:57 MST