private string GetCasedText()
{
string text = Text;
int value = _valueFormatter.Value( Text );
string valueString = _valueFormatter.ValueText( value, CharacterCasing );
int textIndex = 0;
int valueStringIndex = 0;
StringBuilder sb = new StringBuilder();
bool nonZeroFound = false;
bool zeroAppended = false;
while ( ( textIndex < text.Length ) &&
( valueStringIndex < valueString.Length ) )
{
if ( !nonZeroFound && text[textIndex] == '0' )
{
if ( LeadingZeros )
{
sb.Append( '0' );
}
else if ( !zeroAppended && ( value == 0 ) )
{
sb.Append( '0' );
zeroAppended = true;
}
++textIndex;
}
else if ( text[textIndex] == valueString[valueStringIndex] )
{
sb.Append( valueString[valueStringIndex] );
++textIndex;
++valueStringIndex;
nonZeroFound = true;
}
else if ( Char.IsUpper( text[textIndex] ) )
{
sb.Append( Char.ToUpper( valueString[valueStringIndex], CultureInfo.InvariantCulture ) );
++textIndex;
++valueStringIndex;
nonZeroFound = true;
}
else
{
++textIndex;
}
}
return sb.ToString();
}