2016-10-18 30 views
12

Tôi đang cố gắng thực hiện xác thực IFSCCode nhanh chóng, nhưng vấn đề tôi đang gặp phải là tôi không thể tìm nạp bốn chữ cái đầu tiên trong chuỗi.Làm thế nào để có được bốn chữ cái đầu tiên từ chuỗi trong Swift 3?

Mã IFSC dụ:

ABCD0200000

Đây là cách một Mã IFSC trông:

  1. bốn nhân vật đầu tiên trong Mã IFSC luôn bảng chữ cái
  2. nhân vật thứ năm là luôn luôn là số không.
  3. Và phần còn lại có thể là bất cứ điều gì
  4. Độ dài của mã IFSC không được lớn hơn hoặc nhỏ hơn 11. Phải dài 11.

Tôi đã viết mã để xác thực mã ifs trong Mục tiêu C, nhưng tôi không quen thuộc với Swift để gặp sự cố khi sao chép giống nhau trong Swift.

Sau đây là đoạn code mà tôi đã viết bằng Objective C:

- (BOOL)validateIFSCCode:(NSString*)ifsccode { 
    if (ifsccode.length < 4) { 
    return FALSE; 
    } 
    for (int i = 0; i < 4; i++) { 
    if (![[NSCharacterSet letterCharacterSet] 
      characterIsMember:[ifsccode characterAtIndex:i]]) { 
     return FALSE; 
    } 
    } 
    if (ifsccode.length < 10) { 
    return FALSE; 
    } 
    if ([ifsccode characterAtIndex:4] != '0') { 
    return FALSE; 
    } else { 
    return TRUE; 
    } 
} 

Trong Swift 3

func validateIfscCode(_ ifscCode : String) -> Bool{ 
    if(ifscCode.characters.count < 4){ 
     return false; 
    } 

    for(_ in 0 ..< 4){ 
     let charEntered = (ifscCode as NSString).character(at: i) 
    } 
    if(ifscCode.characters.count < 10){ 
     return false; 
    } 

    let idx = ifscCode[ifscCode.index(ifscCode.startIndex, offsetBy: 4)] 

    print("idx:%d",idx) 
    if (idx == "0"){ 
    } 
    return true 
} 
+0

Chính xác những gì bạn cần giúp đỡ với? – rmaddy

Trả lời

8

Đây là một xác nhận đơn giản sử dụng biểu thức chính quy. Các mô hình đại diện:

  • ^ phải là sự khởi đầu của chuỗi
  • [A-Za-z]{4} = bốn nhân vật AZ hoặc az
  • 0 một zero
  • .{6} sáu nhân vật tùy ý
  • $ phải là sự kết thúc của chuỗi

func validateIFSC(code : String) -> Bool { 
    let regex = try! NSRegularExpression(pattern: "^[A-Za-z]{4}0.{6}$") 
    return regex.numberOfMatches(in: code, range: NSRange(location:0, length: code.characters.count)) == 1 
} 

PS: Để trả lời câu hỏi của bạn, bạn sẽ có được 4 ký tự đầu tiên trong Swift 3 với

let first4 = code.substring(to:code.index(code.startIndex, offsetBy: 4)) 
+0

Cảm ơn vì giải pháp @vadian – Rani

+0

Cảm ơn bạn Nó hoạt động tốt. – Raja

49

Cách dễ nhất để có được tiền tố của chuỗi là với

// Swift 3 
String(string.characters.prefix(4)) 

// Swift 4 
string.prefix(4) 
+1

Hoàn hảo! Cảm ơn – Vinestro

0

Bạn có thể đạt được nó bằng cách sử dụng phương pháp prefix(), sẽ trả về Swift Substring
Sau đó, bạn có thể chuyển đổi nó thành Chuỗi bằng cách sử dụng String(_:) khởi tạo.

Ví dụ: thứ nhất 4 chữ

let myString = "123456789" 
let myStringPrefix = String(myString.prefix(4)) // result is "1234" 


Nếu chuỗi của bạn có ít hơn 4 ký tự, tối thiểu sẽ được trả lại

Các vấn đề liên quan