2016-08-03 98 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