Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^2: Capitalize First Letter of Each Word

by holli (Abbot)
on Jun 30, 2005 at 13:26 UTC ( [id://471306]=note: print w/replies, xml ) Need Help??


in reply to Re: Capitalize First Letter of Each Word
in thread Capitalize First Letter of Each Word

2 points.

1. It is save to use the ? without braces if the optional part is a single char.
2. No need for the i and s modifier

So that boils down to
s#(.)(\w+ ?)#\U\1\L\2#g for @a;
which looks actually nicer than my original post.


holli, /regexed monk/

Replies are listed 'Best First'.
Re^3: Capitalize First Letter of Each Word
by fishbot_v2 (Chaplain) on Jun 30, 2005 at 13:54 UTC

    It does, except it doesn't work:

    my @a = ("a sTrinG\n" ); s#(.)(\w+ ?)#\U\1\L\2#g for @a; print @a; __END__ a string

    Two things are happening here: The first is that this requires each word to be two characters or more (so it fails on the initial "a"). The second is that the . can match a space, so " sTrinG" fails because \1 contains a space.

    I suggest

    s{ \b(\w+) }{\u\L$1}gx;
      s#\b(\w)(\w* ?)#\U$1\L$2#g
      does the trick.


      holli, /regexed monk/
        That finishing space is completely extraneous... the \b at the front basically is as well. Space is not a word char, so will be just fine if left alone. The \w at the beginning is basically implying \b, since it will only start to match where a word char is.

                        - Ant
                        - Some of my best work - (1 2 3)

Re^3: Capitalize First Letter of Each Word
by Anonymous Monk on Jun 30, 2005 at 13:45 UTC
    I just need to trough this here as well.
    What if I have some uncials like, "LTD" at the end of the string or on the string and it couldn't be changed
      I don't get you. What on earth is a "uncial"?


      holli, /regexed monk/
        Sorry, "Initial", but here, this solved the issue unless you have a better idea.
        s/(?<=\w)(.)/\l\1/g for $test; s/Ltd/LTD/ for $test;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://471306]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2024-04-19 11:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found