Michael Bahr
jedi at charm.net
Sat Sep 29 21:33:54 CDT 2007
> Michael, > > The problem with doing this is that each object has to be examined > character > by character, EVERY line. In this specific case I could certainly do this > however I am under the impression that RegEx is optimized to do this kind > of > thing. Kind of the difference between a similar function to look at every > character and remove it if it matches something and using the replace to > remove a character. Replace is written in a highly optimized (perhaps even > in assembler) whereas the "loop and search" is not optimized at all. > > > > > John W. Colby > Colby Consulting > www.ColbyConsulting.com > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Michael Bahr > Sent: Friday, September 28, 2007 2:25 PM > To: Access Developers discussion and problem solving > Subject: Re: [AccessD] Use Regex - Create Camel Case > > Hi John, here is one way to do it (although there are many ways to get the > same end result). Mind you this is air code but hopefully should be > enough > to get you going. You will need to create the main loop within your code. > > Create a list of all delimiters that are used in your CSV files such as > delimiters = '%|*|$|@|!|#|&|^|_|-|,|.|;|:| ' > > then run through your CSV files line by line evaluating the line saving > the > line into an array thisarray = Split(line, delimiters) > > then run through the array performing a Ucase on the first letter of each > word newline = "" > For item=1 to ubound > newline = newline & whatEverToCapFirstChar(item) Next item > > where ubound is the array size > > > Now here are two scripts that do the same thing, one is Perl and the other > is TCL. Both of these languages are open source and free and can be > gotten > at http://www.activestate.com/Products/languages.plex > > Perl: > > my $delimiters = '/:| |\%|\*|\$|\@|\!|\#|\&|^|_|-|,|\./'; > my @test = ("John colby", > "%idiotic_Field*name", > "hey#hey#Hey,hello_world", > "this#is_a_test_of_the-emergency-broadcast-system"); > > foreach my $item (@test) { > my $temp = ""; > my @list = split ($delimiters, $item); > foreach my $thing (@list) { > $temp .= ucfirst($thing); > } > print "$temp\n"; > > } > > Result > d:\Perl>pascalcase.pl > JohnColby > IdioticFieldName > HeyHeyHeyHelloWorld > ThisIsATestOfTheEmergencyBroadcastSystem > > TCL: > > set delimiters {%|*|$|@|!|#|&|^|_|-|,|.|;|:|\ "} set test [list {John > colby} > {%idiotic_Field*name} {hey#hey#Hey,hello_world} > {this#is_a_test_of_the-emergency-broadcast-system}] > > > foreach item $test { > set str "" > set mylist [split $item, $delimiters] > foreach thing $mylist { > set s [string totitle $thing] > set str "$str$s" > } > puts $str > > } > > Results > D:\VisualTcl\Projects>tclsh pascalcase.tcl JohnColby IdioticFieldName > HeyHeyHeyHelloWorld ThisIsATestOfTheEmergencyBroadcastSystem > > > hth, Mike... > > >> Folks, >> >> I am looking for a regex expression (preferably with explanation) for >> taking an expression and creating a camel case (or PascalCase) >> expression. >> >> I get CSV files with headers in them. All too often the eejits that >> created the databases they came from used embedded spaces or other >> special use characters (!@#$%^&* etc) in their field names. I need to >> strip these special characters out completely. I also need to upper >> case the valid alpha character that follows any of these special >> characters. >> >> John colby becomes JohnColby >> %idiotic_Field*name becomes IdioticFieldName >> >> Etc. >> >> It appears that Regex is the key (I am doing this in VB.Net) but until >> today I have never really tried to use RegEx and it ain't pretty! >> >> Any help in this would be much appreciated. >> >> John W. Colby >> Colby Consulting >> www.ColbyConsulting.com >> >> -- >> AccessD mailing list >> AccessD at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/accessd >> Website: http://www.databaseadvisors.com >> > > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com >