2016-08-03 4 views
0

schwedische Sozialversicherungsnummer oder nationale Identifikationsnummer (Schwedisch: person) ist in der Regel wie folgt formatiert:Griff Unterscheidung zwischen schwedischen Sozialversicherungsnummern (SSN) und Organisation Zahlen

  • YYMMDDNNNN
  • YYMMDDNNNN
  • YYYYMMDDNNNN
  • YYYYMMDDNNNN

Alle Organisationen und Unternehmen haben o RGANISATION Zahlen (Schwedisch: organisationsnummer), die im folgende Format ist und sieht aus wie Schwedisch SSN:

  • XXXXXXXXXX
  • XXXXXXXXXX

Gibt es trotzdem eine programmatische Unterscheidung zu tun, wenn es zu sehen ist eine Organisationsnummer oder SSN? Vorzugsweise in C#.

+2

Was passiert, wenn mehr als 9.999 schwedische Babys geschieht am selben Tag geboren werden? – juharr

+1

@juharr ich in dieser lief während meiner Frage zu erforschen. Tatsächlich kann es weniger handhaben, die letzte Ziffer ist nur eine Kontrollziffer und die vorletzte Ziffer ist für Jungen und sogar für Mädchen ungerade. Was passiert, wenn wir am selben Tag 500 Jungen oder Mädchen erreichen, ist die eigentliche Frage (im Moment ist Schweden etwa 300 Jahre alt). Juli 2014 hatte durchschnittlich 352 Jungen pro Tag. https://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)#Checksum http://www.scb.se/sv_/Hitta-statistik/Artiklar/Manga-barn-fods-under-var-och-sommar/ – Ogglas

+0

@Ogglas In Österreich ist es genau das gleiche System. Und es gibt tatsächlich Fälle mit mehr als 500 Jungen pro Tag. In diesem Fall ist das Geburtsdatum auf der Sozialversicherungsnummer ** 2014-13-32 **, das heißt ein fiktives Datum, das es nicht gibt! ** Eine Software sollte in der Lage sein, damit umzugehen. ** Übrigens: Dies ist hauptsächlich auf Einwanderer aus Ländern mit niedrigen Standards zurückzuführen, wo viele Menschen am 1. Januar oder 1. Juni "offiziell geboren" sind. –

Antwort

0

Ja, es gibt. :)

Organisation Zahlen sehen aus wie persönliche Identität Zahlen haben aber eine „Monat“ Zahl von 20 oder höher, so dass ein distinction is possible. Die niedrigste Zahl Organisation daher wird wie folgt aus:

  • XX20XXXXXX
  • XX20XXXXXX

Deshalb können wir die erste Zahl in „Monat“ überprüfen, um zu sehen, ob es entweder eine 0 oder 1 (1. Januar ... 10. Oktober usw.).

Code, der alle oben genannten verarbeiten kann, muss einige Fehlerprüfung obwohl in der Produktion zu verwenden:

public bool IsSwedishSsn(string identity) 
{ 
    identity = identity.Replace("-", ""); 

    if (identity.Length == 12) 
     identity = identity.Substring(2, 10); 

    return bool socialSecurityNumber = identity.Substring(2, 1) == "0" || identity.Substring(2, 1) == "1"; 
} 
+1

Es ist schön, dass Sie heute etwas gelernt haben, aber ist diese Information wirklich so relevant für andere Programmierer? Es ist eher "zu lokalisiert" (ein enger Grund, der nicht mehr existiert), die allgemeinere Frage _ "Wie man das N-te Zeichen in einer Zeichenkette als eine Zahl erkennt und höher als X oder niedriger als Y ist" (oder Teilmengen davon) wurden schon oft gefragt und gelöst. Und warum lösen Sie dieses Problem nicht auf der Eingabeseite, indem Sie dem Benutzer zwei verschiedene Eingaben geben, so dass sie entweder eine SSN oder eine Organisationsnummer eingeben können? – CodeCaster

+0

Würde das nicht manchmal funktionieren? Was passiert, wenn eine Organisationsnummer auch eine gültige Identifikationsnummer ist? Beispiel: 1601011234. Könnte das auch nicht sein? – hatchet

+0

@CodeCaster Ich dachte eigentlich darüber nach, ob ich das posten sollte oder nicht, aber am Ende dachte ich, es wäre es wert. Ich arbeitete an einem Projekt, bei dem wir dies tun mussten und ich konnte keine ähnliche Frage zu SO finden. Es hat einige Zeit gedauert, bis ich den "Monat" -Code gefunden habe und ich denke wirklich, dass er einigen schwedischen Programmierern in der Zukunft helfen kann, oder dass jemand anders die gleiche Unterscheidung treffen kann. – Ogglas

Verwandte Themen