ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> activetcl
activetcl
Re: [Activetcl] split doing two different things
by Enrico Herzke other posts by this author
Apr 8 2008 7:08AM messages near this date
view in the new Beta List Site
Re: [Activetcl] split doing two different things | Re: [Activetcl] split doing two different things
RTFM:

NAME
split - Split a string into a proper Tcl list
SYNOPSIS
split string ?splitChars?
DESCRIPTION
Returns a list created by splitting string at each character that is in the splitChars argum
ent. Each element of the result list will consist of the characters from string that lie bet
ween instances of the characters in splitChars. Empty list elements will be generated if str
ing contains adjacent characters in splitChars, or if the first or last character of string 
is in splitChars. If splitChars is an empty string then each character of string becomes a s
eparate element of the result list. SplitChars defaults to the standard white-space characte
rs.



Enrico

-------- Original-Nachricht --------
>  Datum: Tue, 8 Apr 2008 09:32:26 -0400
>  Von: "Bahr, Michael" <mbahr@[...].gov>
>  An: "Flavio Salgueiro" <flavio.salgueiro@[...].com>, "Jeff Hobbs" <jeffh@[...].com>, "Gene
 Osteen" <gosteen@[...].com> 
>  CC: activetcl@[...].com
>  Betreff: Re: [Activetcl] split doing two different things

>  Is the empty string normal behavior??  I think Gene is visualizing the
>  string:
>  
>  314185798Ã?59858Ã?2004-11-19Ã?2004-11-19 23:08:00Ã? KPFS-IN
>  NCAL-INTERFACEÃ?121314Ã?121314Ã?121314Ã? 
>  
>  as this
>  314185798Ã?
>  59858Ã?
>  2004-11-19Ã?
>  2004-11-19 23:08:00Ã?
>   KPFS-IN NCAL-INTERFACEÃ?
>  121314Ã?
>  121314Ã?
>  121314Ã?
>  
>  So there are 8 strings and 8 delimiters 
>  
>  Now Perl has been around for over 30 years and I have been programming in
>  Perl for over 13 years and use it as a standard for these things.  Perl's
>  split returns 8 strings as expected as above.  So can someone please explain
>  why Tcl's split "sees" an empty string at the end of the line?  I do not
>  think this is normal behavior.
>  
>  Perl code:
>  $s = '314185798Ã?59858Ã?2004-11-19Ã?2004-11-19 23:08:00Ã? KPFS-IN
>  NCAL-INTERFACEÃ?121314Ã?121314Ã?121314Ã?';
>  @items = split (/Ã?/, $s);
>  foreach $item (@items) { print "$item\n"; }
>  $size = scalar(@items);
>  print "Size of list = $size\n";
>  
>  Mike...
>  
>  > -----Original Message-----
>  > From: activetcl-bounces@[...].com 
>  > [mailto:activetcl-bounces@[...].com] On Behalf 
>  > Of Flavio Salgueiro
>  > Sent: Tuesday, April 08, 2008 12:15 AM
>  > To: Jeff Hobbs; Gene Osteen
>  > Cc: activetcl@[...].com
>  > Subject: Re: [Activetcl] split doing two different things
>  > 
>  > I think that the extra field he is seeing is due to the 
>  > normal behavior of split. The trailing Ã? at the end of the 
>  > list will give you an empty string.
>  > My suggestion is to use 'string trim $myString Ã?' to get rid 
>  > of the trailing delimiter which is giving the extra blank 
>  > field at the end. You would get the same result if you tried 
>  > 'llength [split a: :]' this would result in a count of two 
>  > because split gives you "a and {}" not just "a".
>  > 
>  > Cheers,
>  > 
>  > Flavio 
>  > 
>  > @-> -----Original Message-----
>  > @-> From: activetcl-bounces@[...].com 
>  > [mailto:activetcl- @-> bounces@[...].com] On 
>  > Behalf Of Jeff Hobbs @-> Sent: Monday, April 07, 2008 6:10 PM 
>  > @-> To: Gene Osteen @-> Cc: activetcl@[...].com
>  > @-> Subject: Re: [Activetcl] split doing two different things 
>  > @-> @-> Gene Osteen wrote:
>  > @-> >             I use the split command to tell me how many 
>  > fields are in
>  > @-> a
>  > @-> > line of text sent to me. The data is character 
>  > delimited with a Ã? as @-> the @-> > delimiter. Each line of 
>  > text ends with a Ã?. Normally if I do a split I @-> > get one 
>  > more list element than there are fields. I have a case where 
>  > @-> > this is not happening. I am including 2 examples. The 
>  > first is not @-> > working as expected the line of data is:
>  > @-> >
>  > @-> > 314185798Ã?59858Ã?2004-11-19Ã?2004-11-19 23:08:00Ã? KPFS-IN 
>  > @-> > NCAL-INTERFACEÃ?121314Ã?121314Ã?121314Ã?
>  > @-> >
>  > @-> > For some reason the list length here is 8 which is also 
>  > the number of @-> Ã?s @-> > in the line.
>  > @->
>  > @-> I don't have the same issue, getting the expected correct 
>  > results with @-> 8.4.18 and 8.5.2:
>  > @->
>  > @-> (Tcl) 49 % set str {314185798Ã?59858Ã?2004-11-19Ã?2004-11-19 
>  > 23:08:00Ã? @-> KPFS-IN NCAL-INTERFACEÃ?121314Ã?121314Ã?121314Ã?}
>  > @-> 314185798Ã?59858Ã?2004-11-19Ã?2004-11-19 23:08:00Ã? KPFS-IN 
>  > @-> NCAL-INTERFACEÃ?121314Ã?121314Ã?121314Ã?
>  > @-> (Tcl) 50 % regexp -all Ã? $str
>  > @-> 8
>  > @-> (Tcl) 51 % llength [split $str Ã?]
>  > @-> 9
>  > @-> (Tcl) 52 % split $str Ã?
>  > @-> 314185798 59858 2004-11-19 {2004-11-19 23:08:00} { 
>  > KPFS-IN @-> NCAL-INTERFACE} 121314 121314 121314 {} @-> @-> 
>  > Jeff @-> _______________________________________________
>  > @-> ActiveTcl mailing list
>  > @-> ActiveTcl@[...].com
>  > @-> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>  > _______________________________________________
>  > ActiveTcl mailing list
>  > ActiveTcl@[...].com
>  > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>  > 
>  _______________________________________________
>  ActiveTcl mailing list
>  ActiveTcl@[...].com
>  To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
ActiveTcl mailing list
ActiveTcl@[...].com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Thread:
Gene Osteen
Jeff Hobbs
Flavio Salgueiro
Michael Bahr
Jeff Hobbs
Michael Bahr
Dossy Shiobara
Michael Bahr
Dossy Shiobara
Michael Bahr
Jeff Hobbs
Enrico Herzke
Michael Bahr
Jeff Dinsmore
Michael Bahr
Gene Osteen
Jeff Dinsmore
Enrico Herzke

Privacy Policy | Email Opt-out | Feedback | Syndication
© 2004 ActiveState, a division of Sophos All rights reserved