0

この関数を取得して、マスクされた数値を返そうとしています。番号が 123456789 だとします。マスクされていない値 4 を指定した場合は *6789、マスクされていない値 3 を指定した場合は *789 を返そうとしています。現在、数字の桁数が表示されています。それは私が隠そうとしているものです。私はこれをいじっていますが、私がやりたいことをすることはできません。

Public Function GetMaskedNumber(ByVal sNumber As String, ByVal iUnmaskedLength As Integer, ByVal sMaskChar As String) As String
    sMaskChar = Trim(sMaskChar)
    If iUnmaskedLength > 0 AndAlso Len(sMaskChar) > 0 Then
        GetMaskedNumber = New String(sMaskChar(0), iUnmaskedLength)
        If iUnmaskedLength < Len(sNumber) Then
            Mid(GetMaskedNumber, (Len(sNumber) - iUnmaskedLength), iUnmaskedLength + 1) = Right(sNumber, iUnmaskedLength)
        Else
            GetMaskedNumber = sNumber
        End If
    Else
        GetMaskedNumber = sNumber
    End If
End Function
4

2 に答える 2

3

文字列ではなく整数(iNumberなど)としてマスクしたい数値がある場合は、次を使用できます

"*" & CStr(iNumber mod (10 ^ iUnmaskedLength))

(vb.net^では累乗であることに注意してください。)

sNumber を使用せず、使用する必要がある場合は、次を使用します

"*" & Right(sNumber, iUnmaskedLength)

Right()iUnmaskedLength文字列の長さよりも大きくすることができます。そのような場合、入力文字列を返します。

于 2013-07-09T13:55:58.607 に答える
0

いくつかのエラーチェックを行います。

テストコード

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'test
    Dim i As Long = Long.MaxValue
    Dim s As String = GetMaskedNumber(i, 12)
    s = GetMaskedNumber(i, 20)
End Sub

関数

Public Function GetMaskedNumber(ByVal theNum As Long, _
                                ByVal UnmaskedLength As Integer, _
                                Optional MaskChar As String = "*") As String
    Dim retval As String = theNum.ToString
    If retval.Length > UnmaskedLength Then
        retval = String.Format("{0}{1}", MaskChar, retval.Substring(retval.Length - UnmaskedLength))
    Else
        'ERROR???
        Stop
    End If
    Return retval
End Function
于 2013-07-09T14:16:33.630 に答える