Convert Text to Sentence Case
Harmonizing data often includes transforming names and addresses to UPPER CASE, but some clients opt for Sentence Case wherein only the first letter of each word is capitalized. Translating everything to upper case is very easy and now Sentence Case can, too.
This snippet is written for the scripting language that comes with BODS. It is akin to Java, but with cumbersome spelled out begin and end brackets.
Additionally, variables must be declared in the interface instead of in the code. The Return parameter that represents the output must be changed from its default of int
to varchar
of length 255 and a parameter called $input
of type varchar
must be added with a length of 255.
The code requires two local variables. They are $current
of type int
and $output
of type varchar
of length 255.
$output = upper( substr( $input, 1, 1) ); $current = 1; while( $current < length( $input ) ) begin $current = $current +1; if( substr( $input, $current-1, 1) = ' ' or substr( $input, $current-1, 1) = '.' or substr( $input, $current-1, 1) = '/' ) begin $output = $output || upper( substr( $input, $current, 1)); end else begin $output = $output || lower( substr( $input, $current, 1)); end end return $output;
Here is the same function in VBA for Microsoft Office products. The space, dash and forward slash characters here denote the beginning of a word and additional special characters can be added easily.
Function SentenceCase(strInput As String) As String Dim strOutput As String strOutput = UCase(Left(strInput, 1)) Dim nCurrent As Integer nCurrent = 1 Do While nCurrent < Len(strInput) nCurrent = nCurrent + 1 If InStr(1, " /-", Mid(strInput, nCurrent - 1, 1)) > 0 Then strOutput = strOutput & UCase(Mid(strInput, nCurrent, 1)) Else strOutput = strOutput & LCase(Mid(strInput, nCurrent, 1)) End If Loop SentenceCase = strOutput End Function