校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

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

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

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

下面是判斷銀行卡號輸入是否正確的代碼(基于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):

設(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;

}

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

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)》,本文關(guān)鍵詞  判斷,用戶,輸入,的,銀行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)》相關(guān)的同類信息!
  • 本頁收集關(guān)于判斷用戶輸入的銀行卡號是否正確的方法(基于Luhn算法的格式校驗)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 桃园县| 临潭县| 阿克苏市| 乾安县| 万山特区| 开原市| 兴安县| 永善县| 七台河市| 宁津县| 仙游县| 泰安市| 岳西县| 大兴区| 通河县| 屏山县| 靖边县| 合江县| 西城区| 阿合奇县| 工布江达县| 内乡县| 开化县| 弋阳县| 扬中市| 大冶市| 双峰县| 唐河县| 江华| 沐川县| 阿拉善右旗| 太仆寺旗| 全州县| 金湖县| 丹寨县| 黑龙江省| 南充市| 蓝山县| 丘北县| 乌鲁木齐市| 五大连池市|