CheckSheba
چک کردن شماره شبا وارد شده جهت درست بودن فرمت و الگوریتم آن
Source
public static class Helper{
public static bool CheckSheba(string input, bool checkLenght)
{
if (input.IsNullOrEmptyOrWhiteSpace())
{
return false;
}
input = input.Replace(" ", "").ToLower();
//بررسی رشته وارد شده برای اینکه در فرمت شبا باشد
var isSheba = Regex.IsMatch(input, "^[a-zA-Z]{2}\\d{2} ?\\d{4} ?\\d{4} ?\\d{4} ?\\d{4} ?[\\d]{0,2}",
RegexOptions.Compiled);
if (!isSheba)
return false;
//طول شماره شبا را چک میکند کمتر نباشد
if (input.Length < 26)
return false;
input = input.ToLower();
//بررسی اعتبار سنجی اصلی شبا
////ابتدا گرفتن چهار رقم اول شبا
var get4FirstDigit = input.Substring(0, 4);
////جایگزین کردن عدد 18 و 27 به جای آی و آر
var replacedGet4FirstDigit = get4FirstDigit.ToLower().Replace("i", "18").Replace("r", "27");
////حذف چهار رقم اول از رشته شبا
var removedShebaFirst4Digit = input.Replace(get4FirstDigit, "");
////کانکت کردن شبای باقیمانده با جایگزین شده چهار رقم اول
var newSheba = removedShebaFirst4Digit + replacedGet4FirstDigit;
////تبدیل کردن شبا به عدد - دسیمال تا 28 رقم را نگه میدارد
var finalLongData = Convert.ToDecimal(newSheba);
////تقسیم عدد نهایی به مقدار 97 - اگر باقیمانده برابر با عدد یک شود این رشته شبا صحیح خواهد بود
var finalReminder = finalLongData % 97;
if (finalReminder == 1)
{
return true;
}
return false;
}
}
Example
string txtSheba= "IR540560084788802245494001";
return txtSheba.CheckSheba();