Novell Home

Converting All-Capitals to Title Case

Novell Cool Solutions: Tip
By Lothar Haeger

Digg This - Slashdot This

Posted: 22 Feb 2006
 

Problem

A reader described the following situation:

"I have a problem with the delimited text driver, when the input has attributes written in all capital letters and I need to convert them to title case. I have managed to change attributes with just one word to "Title Case" using reformat in Transformation policy, but some attibutes have more than one word. For example, Firstnames = "JOHN PETER" goes to = "John peter" using reformat.

How do I detect the space and change the second, third, etc. words' first letters to uppercase? Should I write a Input transformation policy using XSL template that converts a string from "ALL CAPITAL LETTERS" to "Title Case"?"

And here's the response from Lothar Haegar ...

Solution

If you can live with a less than 100%-solution, something like this might work for you:

        <do-reformat-op-attr name="UPPERCASE">
            <arg-value>
                <token-replace-all regex="\ba" replace-with="A">
                <token-replace-all regex="\bb" replace-with="B">
                <token-replace-all regex="\bc" replace-with="C">
                [D,E,F...]
                        <token-lower-case>
                        <token-local-variable name="current-value"/>
                        </token-lower-case>
                        [another 23x...]
                </token-replace-all>
                </token-replace-all>
                </token-replace-all>
            </arg-value>
        </do-reformat-op-attr>

Note that "\b" matches word boundaries. Take a look at the following reference; it helped me a lot:
http://www.regular-expressions.info/reference.html.


Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com

© 2014 Novell