M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

ISBNコードのシリアライザ/デシリアライザをつくった

まあ背景事情がないでもないのですが。。思い立ったが吉日とばかり、あれこれの予定をすっぽかしてISBNコードの仕様を調べて、シリアライザ/デシリアライザをつくってみました。ISBN-10・ISBN-13のいずれにも対応しています。単体テストNUnitで、動作確認はWindowsmacOSのいずれでもとっています。

プロジェクトのGitHubリポジトリこちらアセンブリは例によってNuGet Galleryにて公開しています。

以下のようにして使います:

// P・ブルデュー『社会学の社会学』のISBNコード
string isbnString = "ISBN-13: 978-4938661236";
IsbnCode isbnCode = IsbnCode.Parse(isbnString);

// 以下のコードもこれと同義
// var isbnCode = IsbnCode.Parse("ISBN-13: 978-4-938661-23-6");
// var isbnCode = IsbnCode.Parse("ISBN-13 978-4938661236");
// var isbnCode = IsbnCode.Parse("ISBN 978-4-938661-23-6");
// var isbnCode = IsbnCode.Parse("ISBN978-4-938661-23-6");
// var isbnCode = IsbnCode.Parse("978-4-938661-23-6");
// var isbnCode = IsbnCode.Parse("9784938661236");
// var isbnCode = IsbnCode.Parse("ISBN-10: 4-938661-23-6");
// var isbnCode = IsbnCode.Parse("4-938661-23-6");
// var isbnCode = IsbnCode.Parse("4938661236");

// グループ記号は日本国内の出版であることを示す "4"
Digits group = isbnCode.Group; // => Digits("4")
string agencyName = isbnCode.Agency; // => "Japan"

// 出版者記号は藤原書店を表す "938661"
Digits publisher = isbnCode.Publisher; // => Digits("938661")

// 書名記号は 『社会学の社会学』 を示す "23"
Digits title = isbnCode.Title; // => Digits("23")

// 検査数字はモジュラス10で計算された '6'
char checkDigit = isbnCode.CheckDigit; // => '6'

// 引数なしの ToString() はプレフィクスやハイフンを含んだ形式の文字列を返す
string isbnString2 = isbnCode.ToString(); // => "ISBN-13: 978-4-938661-23-6"
string isbnString3 = isbnCode.ToString(IsbnCodeStyles.WithHyphens); // =>  "978-4-938661-23-6"
string isbnString4 = isbnCode.ToString(IsbnCodeStyles.AsIsbn10Code); // => "4-938661-23-6"