0

I am writing a function to format a string. I receive a string of numbers, sometimes with dashes, sometimes not. I need to produce an output string of 14 characters, so if the input string contains less than 14, I need to pad it with zeros. then I need to mask the string of numbers by inserting dashes in appropriate places. Here is what I got so far:

strTemp = strTemp.Replace("-", "")
If IsNumeric(strTemp) Then

     If strTemp.Length < 14 Then
         strTemp = strTemp.PadRight(14 - strTemp.Length)
     End If

     output = String.Format(strTemp, "{00-000-0-0000-00-00}")
End If

The above works fine, except it just returns a string of numbers without putting in the dashes. I know I am doing something wrong with String.Format but so far I've only worked with pre-defined formats. Can anyone help? How can I use Regex for string formatting in this case?

kums
  • 2,661
  • 2
  • 13
  • 16
Coding Duchess
  • 6,445
  • 20
  • 113
  • 209

1 Answers1

1

This function should do the trick:

Public Function MaskFormat(input As String) As String
    input = input.Replace("-", String.Empty)

    If IsNumeric(input) Then
        If input.Length < 14 Then
            input = input.PadRight(14 - input.Length)
        End If

        Return String.Format("{0:00-000-0-0000-00-00}", CLng(input))
    Else
        Return String.Empty
    End If
End Function

You can find more on String formatting here.

Stijn
  • 1,970
  • 3
  • 27
  • 36