濮阳杆衣贸易有限公司

主頁 > 知識庫 > 判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)

判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)

熱門標簽:貴港公司如何申請400電話 西藏智能外呼系統(tǒng)代理商 400電話辦理電話辦理 地圖標注教學點 梅縣地圖標注 ai電話機器人搭建 甘肅醫(yī)療外呼系統(tǒng)排名 外呼系統(tǒng)無呼出路由是什么原因 呼叫系統(tǒng)外呼只能兩次

開發(fā)中,有時候,為了打造更好的用戶體驗,同時減輕服務器端的壓力,需要對于一些如,手機號碼,銀行卡號,身份證號碼進行格式校驗

下面是判斷銀行卡號輸入是否正確的代碼(基于Luhn算法的格式校驗):

iOS代碼:

/**

 * 銀行卡格式校驗

 *

 * @param cardNo 銀行卡號

 *

 * @return 

 */

+ (BOOL) checkCardNo:(NSString*) cardNo{

  

  

  int oddsum = 0;   //奇數(shù)求和

  int evensum = 0;  //偶數(shù)求和

  int allsum = 0;

  int cardNoLength = (int)[cardNo length];

  int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];

  

  cardNo = [cardNo substringToIndex:cardNoLength - 1];

  for (int i = cardNoLength -1 ; i>=1;i--) {

    NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];

    int tmpVal = [tmpString intValue];

    if (cardNoLength % 2 ==1 ) {

      if((i % 2) == 0){

        tmpVal *= 2;

        if(tmpVal>=10)

          tmpVal -= 9;

        evensum += tmpVal;

      }else{

        oddsum += tmpVal;

      }

    }else{

      if((i % 2) == 1){

        tmpVal *= 2;

        if(tmpVal>=10)

          tmpVal -= 9;

        evensum += tmpVal;

      }else{

        oddsum += tmpVal;

      }

    }

  }

  

  allsum = oddsum + evensum;

  allsum += lastNum;

  if((allsum % 10) == 0)

    return YES;

  else

    return NO;

}

Androd代碼:

/**

 

 * 匹配Luhn算法:可用于檢測銀行卡卡號

 

 * @param cardNo

 

 * @return

 

 */

 

public static boolean matchLuhn(String cardNo) {

 

  int[] cardNoArr = new int[cardNo.length()];

 

  for (int i=0; icardNo.length(); i++) {

 

    cardNoArr[i] = Integer.valueOf(String.valueOf(cardNo.charAt(i)));

 

  }

 

  for(int i=cardNoArr.length-2;i>=0;i-=2) {

 

    cardNoArr[i] = 1;

 

    cardNoArr[i] = cardNoArr[i]/10 + cardNoArr[i]%10;

 

  }

 

  int sum = 0;

 

  for(int i=0;icardNoArr.length;i++) {

 

    sum += cardNoArr[i];

 

  }

 

  return sum % 10 == 0;

 

}

附(銀行卡號格式化):

在輸入銀行卡號過程中,通常,我們會每隔4位插入一個"-",類似"1332-2131-2313-1231-212"這種的格式
可以通過以下方法實現(xiàn):

設置textField的代理

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

  NSString *text = [textField text];

  NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];

  string = [string stringByReplacingOccurrencesOfString:@"-" withString:@""];

  if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {

    return NO;

  }

  

  text = [text stringByReplacingCharactersInRange:range withString:string];

  text = [text stringByReplacingOccurrencesOfString:@"-" withString:@""];

  

  NSString *newString = @"";

  while (text.length > 0) {

    NSString *subString = [text substringToIndex:MIN(text.length, 4)];

    newString = [newString stringByAppendingString:subString];

    if (subString.length == 4) {

      newString = [newString stringByAppendingString:@"-"];

    }

    text = [text substringFromIndex:MIN(text.length, 4)];

  }

  

  newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];

  

  if (newString.length >= 24) {

    return NO;

  }

  

  [textField setText:newString];

  

  return NO;

}

最后,怎么獲得不包含符號"-"的銀行卡號呢?

[self.textField.text stringByReplacingOccurrencesOfString:@"-" withString:@""]

以上這篇判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • iOS 中使用正則表達式判斷身份證格式及銀行卡號格式是否正確(推薦)
  • PHP實現(xiàn)通過Luhn算法校驗信用卡卡號是否有效
  • Go語言通過Luhn算法驗證信用卡卡號是否有效的方法

標簽:湖州 ???/a> 大興安嶺 涼山 常州 哈密 本溪 泰安

巨人網(wǎng)絡通訊聲明:本文標題《判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)》,本文關鍵詞  判斷,用戶,輸入,的,銀行,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)》相關的同類信息!
  • 本頁收集關于判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    邻水| 大方县| 扶风县| 平顶山市| 应用必备| 保定市| 高州市| 渝中区| 衡南县| 巍山| 林口县| 筠连县| 宣汉县| 玉门市| 西峡县| 杭州市| 内江市| 炉霍县| 慈利县| 巴南区| 景东| 通道| 专栏| 盘山县| 天等县| 通州市| 绥棱县| 高州市| 新巴尔虎左旗| 阳山县| 交口县| 湾仔区| 工布江达县| 晴隆县| 连云港市| 霍邱县| 克山县| 双流县| 全南县| 大渡口区| 克山县|