📖 简体中文 / 📖 English
本项目是一个简单的 Java ISBN 工具类,可以用于解析、格式化和验证 ISBN 编号。
Maven:
<dependency>
<groupId>io.github.c5h12o5</groupId>
<artifactId>isbn-util</artifactId>
<version>1.0.2</version>
</dependency>
Gradle:
implementation 'io.github.c5h12o5:isbn-util:1.0.2'
去除 ISBN 编号中的分隔符:
ISBN.compact("7-03-014726-X") = "703014726X"
ISBN.compact("978 7 03 038722 6") = "9787030387226"
检查 ISBN 编号是否为有效的 ISBN-13 或 ISBN-10 格式:
ISBN.isValid("703014726X") = true
ISBN.isValid("9787030387226") = true
ISBN.isValid("978-7-03-038722-6") = true
// 校验位错误
ISBN.isValid("978-7-03-038722-0") = false
// 分隔符位置错误
ISBN.isValid("978-7-0303-8722-6") = false
使用指定的分隔符格式化 ISBN 编号:
ISBN.formatISBN13("7-03-014726-X") = "9787030147264"
ISBN.formatISBN13("703014726X", "-") = "978-7-03-014726-4"
ISBN.formatISBN10("978-7-03-014726-4") = "703014726X"
ISBN.formatISBN10("9787030147264", " ") = "7 03 014726 X"
// 带有 979 前缀的 ISBN-13 无法格式化为 ISBN-10
ISBN.formatISBN10("979-8-6024-0545-3") = null
比较两个有效的 ISBN 编号是否相等:
ISBN.equals("703014726X", "7 03 014726 X") = true
ISBN.equals("703014726X", "978-7-03-014726-4") = true
将 ISBN 编号解析为 ISBN 对象:
ISBNObject obj = ISBN.parse("703014726X");
obj.getGS1Prefix(); // 978
obj.getRegistrationGroup(); // 7
obj.getRegistrant(); // 03
obj.getPublication(); // 014726
obj.getISBN13CheckDigit(); // 4
obj.getISBN10CheckDigit(); // X
obj.toISBN13(); // 9787030147264
obj.toISBN10(); // 703014726X
本项目内置的区域代码表文件可能不是最新的,如果你需要使用最新的区域代码数据,可以从国际ISBN中心网站(https://www.isbn-international.org/range_file_generation)上下载最新文件到本地,然后调用ISBN.loadRangeMessageFile
方法将其加载到内存中:
try (InputStream is = getClass().getResourceAsStream("/RangeMessage.xml")) {
ISBN.loadRangeMessageFile(is);
}