返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

图书ISBN编号的验证方法及实现代码

时间:2015-04-21 13:05来源:betway必威官网www.etsupport.net 编辑:麦田守望者

一个图书ISBN号的验证方法,貌似,这应该是到目前为止自己独立写的最长的一个方法吧。
这几天,构思,查资料,请教前辈……
不容易,终于还是完成了。
总结:不错!嘎嘎O(∩_∩)O哈哈~

下面是源代码

 


bool CheckISBN(string isbn)
{
if (isbn.Length > 17)
{
return false;
}
else
{
//13位数ISBN(包括"-"共17个字符)
if(isbn.Length==17)
{
if (isbn.Substring(0, 3) != "978" && isbn.Substring(0, 3) != "979")//从0开始
{
return false;
}
else if (isbn.Substring(4, 1) != "7")
{
return false;
}
else
{
string isbnText = isbn.Replace("-", "");
int sun = 0;//总和
for (int i = 0; i < 12; i++)
{
int n = 0;//奇数时
int m = 0;//偶数位时

if (i % 2 == 0)//因为位置排列从0开始,第0位是奇数位,所以求奇数位的值引用偶数算法
{
n = int.Parse(isbnText.Substring(i, 1)) * 1;
}
if (i % 2 != 0)
{
m = int.Parse(isbnText.Substring(i, 1)) * 3;
}

sun = sun + n + m;
}
int mod = 10 – sun % 10;//求10-(mod 10)
if (int.Parse(isbn.Substring(16, 1)) == mod)
{
return true;
}
else
{
return false;
}
}
}

//10位数ISBN(包括"-"共13个字符)
if (isbn.Length == 13)
{
if (isbn.Substring(0, 1) != "7")
{
return false;
}
else
{
string isbnText = isbn.Replace("-", "");
int sun = 0;

//第0位 * 10 + 第二位 * 9 + …… + 第九位 * 2 类推结束
for (int i = 0, j = 10; i < 9; i++, j–)
{
sun = sun + int.Parse(isbnText.Substring(i, 1)) * j;
}
int mod = (11 – sun % 11) % 11;// (11-sun模数11)再模数11
if (int.Parse(isbn.Substring(12, 1)) == mod)
{
return true;
}
else
{
return false;
}
}
}
else
{
return false;
}

}
}

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):C# C#实例教程 c#基础教程 C#源代码 c#技巧
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片