2013-07-09 47 views
0

我試圖讓此函數返回一個掩碼數字。說我有號碼123456789.我試圖讓它返回* 6789,如果我給一個4的未掩碼值,或* 789,如果我給它一個未屏蔽的值3.目前它顯示數字中的位數,這就是我試圖隱藏的東西。我一直在玩弄這個,但我不能完全按照自己的意願去做。通過顯示前面帶有1個掩碼字符的最後「x」數字掩蓋數字

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 

回答

3

如果您想要掩蓋作爲一個整數(i編號發言權)的數量,而不是一個字符串,你可以使用

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

(請注意,在vb.net ^是求冪)。

如果不這樣做,需要與sNumber工作,然後使用

"*" & Right(sNumber, iUnmaskedLength) 

Right()允許iUnmaskedLength大於字符串的長度;在這種情況下,它返回輸入字符串。

+0

哇非常簡單。我太過於複雜了。 Right()將爲這個完美的工作。 –

+0

'RIGHT()'是正確的......簡單就是美麗。 – Floris

+0

RIGHT()從VB6延緩。 – dbasnett

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