2016-08-03 107 views
0

瑞典社会安全号码或身份证号码(瑞典语:personnummer)通常格式如下:手柄区别

  • YYMMDDNNNN
  • YYMMDDNNNN
  • YYYYMMDDNNNN
  • YYYYMMDDNNNN

所有组织和公司有Ø这是在下面的格式,看起来像瑞典SSN:rganisation号(organisationsnummer瑞典):

  • XXXXXXXXXX
  • XXXXXXXXXX

反正有做一个纲领性的区别,看它是否是一个组织号码还是SSN?最好在C#中。

+2

如果超过9999名瑞典婴儿出生在同一天,会发生什么? – juharr

+1

@juharr我在研究我的问题时遇到了这个问题。实际上,它可以处理得更少,最后一位数字只是一个控制数字,倒数第二位对于男孩甚至女孩来说都是奇怪的。当我们到达500个男孩或女孩的同一天时发生的事情是真正的问题(目前瑞典约为300)。 2014年7月,平均每天有352名男孩。 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

@奥格拉斯在奥地利,它是完全一样的系统。实际上每天有超过500名男孩的情况。在这种情况下,社会安全号码的出生日期是** 2014-13-32 **,即不存在的虚构日期! **一个软件应该能够处理这个**顺便说一句:这主要是由于来自标准较低的国家的移民,那里的许多人在1月1日或6月1日“正式出生”。 –

回答

0

是的。 :)

组织号码看起来像个人身份号码,但具有20或更高的“月”数,因此distinction is possible。因此,最低的团体号变成这样:

  • XX20XXXXXX
  • XX20XXXXXX

因此,我们可以为您在“月”的第一个数字,看它是否是0或者1( 1月1日... 10月10日等)。可以处理上述所有

代码,需要一些错误检查在生产中虽然使用方法:

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

今天你学到了一些东西,这很好,但是这些信息真的和其他程序员有关吗?它太“本地化”(一个不存在的紧密原因),更通用的问题_“如何识别字符串中的第N个字符是数字,并且高于X或低于Y”_(或其子集)已被询问并且大量解决。为什么不在输入端解决这个问题,为用户提供两种不同的输入,以便他们可以输入SSN或组织编号? – CodeCaster

+0

这有时不会有效吗?当组织号码也是有效的识别号码时会发生什么?例如:1601011234.难道不是吗? – hatchet

+0

@CodeCaster我真的给了它一些想法,如果我应该发表或不,但最终我认为这是值得的。我正在研究一个项目,我们需要这样做,而且我也找不到任何类似的问题。花了一些时间才找到“月份”代码,我真的认为它可以帮助一些瑞典的程序员,或者任何其他人不得不作出同样的区分。 – Ogglas