WPTheme Java JavaScript…Yeah~!
May 16

今晚因为有QQ群上有位网友问到如何判断ISBN号,于是就研究一下,结果写了一个JAVA方法出来,经过多本书籍ISBN号的验证,嘿嘿,正确无误!

[code:java]
/**
* 判断是否ISBN号。
*

     * 国际标准书号ISBN是英文International Standard Book Number的缩写,
     * 1971年国际标准化组织ISO(International Organization for Standardization)
     * 批准了国际标准书号在世界范围内实施,迄今已经有30多年的历史,参加国家有159个。
     * 国际标准书号由十位数字组成。由三条短横线分为四段,第一段都有不同的含义。
     * 第一段号码是地区号,又叫组号,
     * 由设在德国柏林国立普鲁士文化遗产图书馆的国际标准书号中心分配。
     * 最短的是一位数字,最长的达五位数字,大体上兼顾文种、国别和地区。
     * 把全世界自愿申请参加国际标准书号体系的国家和地区,划分成若干组,
     * 各有固定的编码,如0、1代表英文出版物,7代表中国出版物等。
     * 第二段号码是出版社代码,由其隶属的国家或地区ISBN中心分配,
     * 允许取值范围为2-5位数字。出版社的规模越大,出书越多,其号码就越短。
     * 第三段是书序号,由出版社自己给出,每个出版社的书序号是定长的。
     * 最短的一位,最长的六位。出版社的规模越大,出书越多,序号越长。
     * 第四段是校验位,用10至2这9个数分别去乘标准书号的前9位数然后以11为模计算得到。
     * 取值范围为0-10,10由X代替。
     * 10位ISBN:0-393-04002-?

* @param s 待判断的字符串
* @return 如果是ISBN号,返回true,否则返回false。
*/
public static boolean isISBN(String s){
final String regex="\d{1,5}\-\d{2,5}\-\d{1,6}\-([0-9]|x|X)";
if(!s.matches(regex)) return false;
String regexSp[]=s.split("\-");
int leng=regexSp[0].length()+regexSp[1].length()+regexSp[2].length();
if(leng!=9) return false;
int check=0,ten_two=10;//检验数
for(int ii=0;ii<3;ii++){
for(int i=0;i check=check+Integer.parseInt(String.valueOf(regexSp[ii].charAt(i)))*ten_two;
ten_two--;
}
}
int last="x".equals(regexSp[3].toLowerCase())? 10 : Integer.parseInt(regexSp[3]);
if((check+last)%11!=0) return false;
return true;
}
[/code]

respondLeave a Reply