26. februar 2006 - 15:16Der er
13 kommentarer og 1 løsning
Trim tlf-nr
Jeg udlæser tlf-nr fra en htm.-fil og formatet kan variere så jeg har brug for en funktion som kan trimme det så jeg får et ens output. Her er to variationer: "+45 3300 0000" "33000000"
...og de skulle gerne ende med at se således ud: "+45 33 00 00 00" "+45 33 00 00 00"
' Jeg har valgt at lave en array, til at simulere nogle telefonnumre:
s = "+45 3300 0000¤33000000¤1234 5678" ' eksempler på numre s = Replace(LCase(s), " ", "") s = Replace(LCase(s), " ", "") ' Nu er strengen lig: "+4533000000¤33000000¤33000000"
s = split(s, "¤")
For i = 0 To UBound(s) prefix = "+45 " ' prefix, som indsættes foran tlf.nr.. husk mellemrum tmp = s(i) ' indeholder hele telefon nummeret tmp = Replace(tmp, "+45", "") ' fjern +45 så vi kun skal arbejde med tlf.nr.
Så skal man ud i noget RegExp, hvilket ikke er min stærke side.. Men man kunne også lave en loop, der kørte fra 0 og til længden af strengen.. Denne loop skal checke "nuværende" tegns CHR værdi.. CHR værdien skal så ligge i "0-9"-området.. hvis ikke, fjernes tegnet..
' Jeg har valgt at lave en array, til at simulere nogle telefonnumre:
s = "+45 3300 0000¤3300a0b00c0¤1234 5678" ' eksempler på numre s = split(s, "¤")
For i = 0 To UBound(s) prefix = "+45 " ' prefix, som indsættes foran tlf.nr.. husk mellemrum tmp = s(i) ' indeholder hele telefon nummeret tmp = Replace(tmp, "+45", "") ' fjern +45 så vi kun skal arbejde med tlf.nr.
for j = len(tmp) to 1 step -1 ' Denne linie fjerne alle tegn pånær tal if IsNumeric(mid(tmp, j, 1)) = false then tmp = replace(tmp, mid(tmp, j, 1), "") next
Kun som en kommentar til thesurfer udemærkede kode. Her er den med regex
Function PhoneNo(s As String) As String Dim RegEx As Object, temp As String Set RegEx = CreateObject("vbscript.regexp") With RegEx .Global = True .Pattern = "[^\d]+" End With temp = RegEx.Replace(s, "") If Len(temp) = 8 Then PhoneNo = Format("45" + temp, "+## ## ## ## ## ##") Else PhoneNo = Format(temp, "+## ## ## ## ## ##") Set RegEx = Nothing End Function
Sub test4() Dim st As String st = "+45 3300 0000" st = PhoneNo(st) MsgBox st End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.