Il doit y avoir un moyen plus facile de le faire.importer des numéros de téléphone à partir d'une chaîne dans vb.net
J'essaye d'établir une fonction pour une classe de numéro de téléphone appelée "numéro de téléphone d'importation". Il devrait prendre n'importe quelle chaîne avec 10 chiffres quelque part (et permettre une extension), et les importer dans ses propres propriétés: AreaCode, Prefix, Suffix, et Extension (aaa-ppp-ssss-xxxx ...).
Je vérifie l'entrée avec une regex pour m'assurer qu'elle est valide, maintenant je veux marquer ces morceaux dans leurs propriétés respectives. Ce que j'ai ressemble à ceci (incomplet):
Public Sub ImportPhoneNumber(ByVal anyNumber As String)
'phone number is 10-digits long, e.g.: 012-345-6789
Dim reg_exp_10 As New Regex("^((\D*)\d(\D*)){9}((\D*)\d){1}(((x|ext){1}(\d)+)?|\D*)$", RegexOptions.IgnoreCase)
If reg_exp_10.IsMatch(anyNumber) Then
Dim areacode As String = HRITS.Constants.DEFAULT_STRING_VALUE
Dim prefix As String = HRITS.Constants.DEFAULT_STRING_VALUE
Dim suffix As String = HRITS.Constants.DEFAULT_STRING_VALUE
Dim loadExtension As Boolean = False
Dim count As Integer = 0
'for each char in anynumber, is it a number? concatenate it onto holder number
For Each i As Char In anyNumber
'first 3 hits, load areacode
If count < 3 Then
If Char.IsDigit(i) Then
areacode = String.Concat(areacode, i)
count = count + 1
End If
End If
'second 3 hits, load prefix
If count >= 3 AndAlso count < 6 Then
If Char.IsDigit(i) Then
prefix = String.Concat(prefix, i)
count = count + 1
End If
End If
'third 4 hits, load suffix
If count >= 6 AndAlso count < 10 Then
If Char.IsDigit(i) Then
suffix = String.Concat(suffix, i)
count = count + 1
End If
End If
If count >= 10 Then
If i.ToString = "x" Then
loadExtension = True
ElseIf i.ToString = "e" Then
End If
End If
Next
Else
Throw New Exception(ErrorMessages.PhoneNumber.INVALID_NUMBER)
End If
End Sub
des idées?
Uuuh ... pourquoi n'utilisez-vous pas aussi votre expression rationnelle pour l'analyse syntaxique? –
réponse courte: Je ne sais pas comment, je ne savais pas que je pouvais :) – Watki02
Quoi que vous fassiez, ne l'implémentez pas en tant que validateur sur une page web, au mieux c'est ennuyeux quand vous devez "maquiller" un numéro de téléphone ou code postal parce que votre vrai n'est pas américain, au pire vous chasser les utilisateurs légitimes. – Zano