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"
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
' 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.