濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 判斷用戶(hù)輸入的銀行卡號(hào)是否正確的方法(基于Luhn算法的格式校驗(yàn))

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

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

開(kāi)發(fā)中,有時(shí)候,為了打造更好的用戶(hù)體驗(yàn),同時(shí)減輕服務(wù)器端的壓力,需要對(duì)于一些如,手機(jī)號(hào)碼,銀行卡號(hào),身份證號(hào)碼進(jìn)行格式校驗(yàn)

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

iOS代碼:

/**

 * 銀行卡格式校驗(yàn)

 *

 * @param cardNo 銀行卡號(hào)

 *

 * @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算法:可用于檢測(cè)銀行卡卡號(hào)

 

 * @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;

 

}

附(銀行卡號(hào)格式化):

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

設(shè)置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;

}

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

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

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

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

標(biāo)簽:湖州 大興安嶺 涼山 常州 哈密 本溪 泰安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《判斷用戶(hù)輸入的銀行卡號(hào)是否正確的方法(基于Luhn算法的格式校驗(yàn))》,本文關(guān)鍵詞  判斷,用戶(hù),輸入,的,銀行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《判斷用戶(hù)輸入的銀行卡號(hào)是否正確的方法(基于Luhn算法的格式校驗(yàn))》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于判斷用戶(hù)輸入的銀行卡號(hào)是否正確的方法(基于Luhn算法的格式校驗(yàn))的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    济宁市| 花莲市| 天柱县| 宜宾县| 北流市| 浦城县| 阜城县| 中宁县| 灵璧县| 浮山县| 永善县| 涿鹿县| 德州市| 文山县| 大兴区| 台州市| 佛山市| 呈贡县| 安国市| 图们市| 韶关市| 辰溪县| 长兴县| 泰和县| 鸡西市| 黑山县| 陵水| 南投县| 北碚区| 黎平县| 铅山县| 高尔夫| 彭阳县| 抚州市| 伊吾县| 平远县| 丁青县| 赞皇县| 友谊县| 庆元县| 邹城市|