Hi Mark,
Add the two strings and then use str_squeeze or equivalent to remove the
unwanted spaces from the flanks of your new string.
http://ncl.ucar.edu/Document/Functions/Built-in/str_squeeze.shtml
saji
--- On Sun, Mar 20, 2011 at 1:19 PM, Mark Chan <cym263@yahoo.com> wrote: > Dear Dennis, > > Thank you very much! Actually my data is exactly like this (also see the > attached files) > > value name1 name2 > 20.0 aaa1 > 80.7 bbb1 bbb2 > 45.5 ccc1 ccc2 > 60.3 ddd1 > 100.6 eee1 > > I modify your script as below: > > begin > x = asciiread("mydata.dat",-1,"string") > data = stringtofloat(str_get_field(x(1:),1," ")) > nx = dimsizes(x) > ss = new(nx, "string", "No_FillValue") > do n=0,nx-1 > nf = str_fields_count(x(n), " ") > if (nf.eq.2) then > aa1 = str_split(x(n)," ") > ss(n) = aa1(1) > else > aa2 = str_split(x(n)," ") > ss(n) = aa2(1)+" "+aa2(2) > end if > end do > print(ss) > print(data) > end > > > My confusion is as: > > (1) I want to skip the first row but "ss"always keep "name1" as its values > (2) dimsizes(x)=dimsizes(data)+1, so "x" didn't skip the first row. why is > this? > (3) It seems the first value (20.0) was given to "name1" instead of "aaa1", > which actually is wrong, since I would like the "ss(0)=aaa1" to correspond > to > "data(0)=20" > > I may confuse you here, since I was totally confused. > Thanks again for further suggestion. > > Mark > > > > > ----- Original Message ---- > From: Dennis Shea <shea@ucar.edu> > To: Mark Chan <cym263@yahoo.com> > Cc: ncl-talk@ucar.edu > Sent: Sat, March 19, 2011 10:29:03 AM > Subject: Re: string plus string > > x = asciiread("....", -1, "string") > > nx = dimsizes(x) > do n=0,nx-1 > nf = str_fields_count(x(n), " ") > if (nf.eq.1) then > ss = str_split(x(n)," ") > else > aa = str_split(x(n)," ") > ss = aa(0)+" "+aa(1) > end if > print(""+ss) > end do > > or > > ss = new(nx, "string", "No_FillValue") > do n=0,nx-1 > nf = str_fields_count(x(n), " ") > if (nf.eq.1) then > ss(n) = str_split(x(n)," ") > else > aa = str_split(x(n)," ") > ss(n) = aa(0)+" "+aa(1) > end if > end do > > print(""+ss) > > > On 3/18/11 4:59 PM, Mark Chan wrote: > > NCL users, > > > > > > If "x" is a string array like this: > > > > aaa1 aaa2 > > bbb1 > > ccc1 ccc2 > > ddd1 > > eee1 > > > > I want to make a NCL script as: > > > > s1 = str_get_field(x(1:),1," ") > > s2 = str_get_field(x(1:),2," ") > > if (s2.ne."null") then ;------------------how to judge "s2" here > > ss =s1+" "+s2 > > else > > ss=s1 > > end if > > > > The aim is plus "s1" and "s2" with a space between only if "s2" has > value. > > Otherwise the string "ss" would have extra space (e.g. ss=s1+" "), which > >damage > > the variable name. > > Can any one help! > > > > Thanks very much. > > > > Mark > > > > > > > > > > _______________________________________________ > > ncl-talk mailing list > > List instructions, subscriber options, unsubscribe: > > http://mailman.ucar.edu/mailman/listinfo/ncl-talk > > > > > > _______________________________________________ > ncl-talk mailing list > List instructions, subscriber options, unsubscribe: > http://mailman.ucar.edu/mailman/listinfo/ncl-talk > >
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Sun Mar 20 00:36:29 2011
This archive was generated by hypermail 2.1.8 : Wed Mar 23 2011 - 16:15:59 MDT