Regex 字符串屏蔽-插入破折号

Regex 字符串屏蔽-插入破折号,regex,vb.net,string,formatting,masking,Regex,Vb.net,String,Formatting,Masking,我正在编写一个函数来格式化字符串。我收到一串数字,有时带破折号,有时不带破折号。我需要生成一个14个字符的输出字符串,因此如果输入字符串包含少于14个字符,我需要用零填充它。然后我需要通过在适当的位置插入破折号来屏蔽数字字符串。以下是我到目前为止得到的信息: strTemp = strTemp.Replace("-", "") If IsNumeric(strTemp) Then If strTemp.Length < 14 Then strTemp = st

我正在编写一个函数来格式化字符串。我收到一串数字,有时带破折号,有时不带破折号。我需要生成一个14个字符的输出字符串,因此如果输入字符串包含少于14个字符,我需要用零填充它。然后我需要通过在适当的位置插入破折号来屏蔽数字字符串。以下是我到目前为止得到的信息:

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
strTemp=strTemp.Replace(“-”,“”)
如果是数字(strTemp),则
如果标准长度小于14,则
strTemp=strTemp.PadRight(14-strTemp.Length)
如果结束
output=String.Format(strTemp,“{00-000-0-0000-00-00}”)
如果结束

上面的操作很好,只是它只返回一个数字字符串而不输入破折号。我知道我在使用String.Format时出错了,但到目前为止,我只使用了预定义的格式。有人能帮忙吗?在这种情况下,如何使用正则表达式进行字符串格式设置?

此函数应实现以下功能:

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
公共函数MaskFormat(作为字符串输入)作为字符串
input=input.Replace(“-”,String.Empty)
如果是数字(输入),则
如果输入长度小于14,则
input=input.PadRight(14-input.Length)
如果结束
返回字符串。格式(“{0:00-000-0-0000-00-00}”,CLng(输入))
其他的
返回字符串。空
如果结束
端函数
您可以找到有关字符串格式的详细信息