Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Formatera telefonnummer

Postades av 2006-09-25 11:21:36 - Mattias Andersson, i forum asp.net generellt, Tråden har 11 Kommentarer och lästs av 2688 personer

Någon som vet om det finns nåt sätt att i kod formatera om ett telefonnummer för presentation från t.ex. 468123456 till 08-123456? Riktnumret kan ju vara olika många tecken, kanske även landskoden? Finns någon standard eller liknande jag ej vet om?


Svara

Sv: Formatera telefonnummer

Postades av 2006-09-25 11:46:22 - David Hägg

Detta går att lösa med regular expressions.

Sök runt på forumet hur du använder detta, ett mönster som kanske fungerar är:

<code>
^(([+]\d{2}[ ][1-9]\d{0,2}[ ])|([0]\d{1,3}[-]))((\d{2}([ ]\d{2}){2})|(\d{3}([ ]\d{3})*([ ]\d{2})+))$
</code>


Svara

Sv:Formatera telefonnummer

Postades av 2006-09-25 15:34:38 - Mattias Andersson

Har kollat runt lite, men tycker mig inte hitta nåt som hjälper mig med mitt problem, att validera ett telefonnummer är en sak, men att redan ha ett telefonnummer som t.ex. ser ut så här 0468123456 och sedan formatera om det till 08-123456 för presentation. Hur skulle detta gå till? Ge mig gärna ett exempel någon...


Svara

Sv: Formatera telefonnummer

Postades av 2006-09-25 16:11:24 - Magnus Karlsson

Problemet är bara att alla inte bor i ett område med två siffror till riktnummer. Tom 4 siffror i ett riktnummer idag. Du får nog använda en box för riktnummer och en för själva telefonnummret.

Jag använder denna [0][1-9]{1,1}[0-9]{5,}. Då kan användaren bara ange siffror. Ett riktnummer på minst två siffror där start siffran är 0 samt ett telefonnummer som minst består av 5 siffror.


Svara

Sv:Formatera telefonnummer

Postades av 2006-09-25 16:16:39 - Mattias Andersson

Ja, jag förstår problemet... :)

Men det är inte jag som styr över hur telefonnumren registreras, däri ligger mitt problem. Jag screenscrapar (jag vet, inget bra sätt, men det som används) ett webbgränssnitt som jag inte har någon kontroll över och vill presentera de telefonnummer som redan finns registrerade i formatet 468123456 i formatet 08-123456...


Svara

Sv:Formatera telefonnummer

Postades av 2006-09-25 16:24:02 - Niklas Jansson

Fast samtidigt är det väl så att det inte finns två riktnummer AB och ABC?

Då skulle man ju, om man får tag i en lista över alla riktnummer, helt enkelt göra en match mot den listan, och på så sätt få fram var numret ska kapas. (Och tänker man riktig lågnivå kan man ju helt enkelt ha dem i ett tvånivå-träd; första noden är riktnumret, andra är resten av numret. Nya nummer kan enbart läggas till under en befintlig nivå.

EDIT: insåg att det kanske lät lite snurrigt.
Jag tänker mig att vi har en lista (med de enda numren jag kan i huvet):

08
031
0303

Den innehåller alla befintliga riktnummer.
När vi sen får ett nummer, gör vi helt enkelt en koll på de n första siffrorna för att se om det finns någon som matchar. Om ingen matchar så är telefonnumret fel, eller så är något ändrat, eller så saknas helt enkelt ett riktnummer. Om någon matchar bryter vi strängen exakt vid den positionen.

t.ex.
030312345
Kommer då matchas mot 0303, vi kapar den biten, och sätter bindestreck där. Sen finns massa smarta sätt att lagra detta på, men det är ju en annan femma.
Detsamma kan naturligtvis även göras på landsnivå, men eftersom nummer presenteras olika i sverige och i utlandet blir problemet betydligt större isf.


Svara

Sv: Formatera telefonnummer

Postades av 2006-09-25 22:32:11 - David Hägg

Är väl inne lite på Niklas linje här...

Ett snabbt exempel på hur du kan göra detta i en metod som returnerar strängen du vill ha ut.

    protected void Page_Load(object sender, EventArgs e)
    {
        lblPhoneNr.Text += FormatPhoneNumber("46800000000") + "<br />";
        lblPhoneNr.Text += FormatPhoneNumber("46498123456") + "<br />";
        lblPhoneNr.Text += FormatPhoneNumber("46303123456") + "<br />";
        lblPhoneNr.Text += FormatPhoneNumber("+46303001002") + "<br />";
        lblPhoneNr.Text += FormatPhoneNumber("00468777888") + "<br />";
    }

    private string FormatPhoneNumber(string strPhone)
    {
        string strAreaCode = String.Empty;
        string strPhoneNumber = String.Empty;

        Regex regex = new Regex("(46|0046|\\+46)+(8|31|498|303)(\\d*)",
                    RegexOptions.IgnoreCase |
                    RegexOptions.Multiline |
                    RegexOptions.IgnorePatternWhitespace);

        MatchCollection matches = regex.Matches(strPhone);

        foreach (Match m in matches)
        {
            strAreaCode = m.Groups[2].Value;
            strPhoneNumber = m.Groups[3].Value;
        }

        return "0" + strAreaCode + "-" + strPhoneNumber;

    }


Sedan får du hämta in de riktnummer du vill från någon extern källa så slipper du skriva världens längsta regex.



Mvh David


Svara

Sv:Formatera telefonnummer

Postades av 2006-09-26 13:35:20 - Mattias Andersson

Tack, fick det att funka, men kommer dock inte användas ändå, alldeles för tungrott när man ibland har en lista på över 100 nummer som ska presenteras, där varje nummer ska formateras och måste jämföras med riktnummerlistan...


Svara

Sv: Formatera telefonnummer

Postades av 2006-09-26 13:48:30 - Niklas Jansson

... och därför tipsade jag om smarta sätt att spara det på. Problemet är naturligtvis om du definitivt ska hämta rakt ur en datakälla och inte har någon makt över hur det sparas. Annars går ju detta att göra ganska smärtfritt.


Svara

Sv:Formatera telefonnummer

Postades av 2006-09-26 14:40:16 - Mattias Andersson

Ja, det är ju tyvärr det jag måste göra...


Svara

Sv: Formatera telefonnummer

Postades av 2006-09-26 15:04:10 - Niklas Jansson

Då är svaret till chef, kund, etc. enkelt:
"Det finns tre alternativ.
1. Jag får gå in och redigera hur grejerna sparas.
2. Det tar en jävla tid vid varje visning.
3. Vi delar inte upp i riktnummer / telefonnummer"


Svara

Sv: Formatera telefonnummer

Postades av 2006-09-27 14:20:02 - Jan Eriksson

Detta kanske fungerar. 8 hittar vi lätt. 2 siffriga (3 siffror med 0) hittar vi med en array. Resten är 3 siffror (4 med nollan). Vet ej om detta är något för dig men kanske löser en del av ditt problem. Snygga till koden överlåter jag till dig. :-)


        Dim riktnr() As String = {11, 13, 16, 18, 19, 21, 23, 26, 31, 33, 35, 36, 40, 42, 44, 46, 54, 60, 63, 90}

        If Microsoft.VisualBasic.Left(TextBox2.Text, 1) = "8" Then
            ' 8 nuffra som riktnummer
        ElseIf Array.Exists(riktnr, AddressOf riktnummer) Then
            ' Rolig kod som klipper ut dom två första nuffrornas som riktnummer
        Else
            ' Rolig kod som klipper ut dom tre första nuffrorna som riktnummer
        End If


    Function riktnummer(ByVal s As String) As Boolean
        If s.ToString = Microsoft.VisualBasic.Left(TextBox2.Text, 2).ToString Then
            Return True
        Else
            Return False
        End If
    End Function


/Janne


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 735
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies