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