Как получить первые четыре буквы из строки в Swift 3?

Я пытаюсь выполнить проверку IFSCCode в swift, но проблема, с которой я сталкиваюсь, - это то, что я не могу извлечь первые четыре буквы в строке.

Пример кода IFSC:

ABCD0200000

Вот как выглядит код IFSC:

  • Первые четыре символа в коде IFSC всегда являются алфавитами
  • Пятый символ всегда равен нулю.
  • И отдых может быть любым
  • Длина кода IFSC не должна быть больше или меньше 11. Она должна иметь длину 11.

Я написал код для проверки кода ifs в Objective C, но я не так привык в Swift, так что проблема с репликацией в Swift.

Ниже приведен код, который я написал в 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;
  }
}

В 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
}

Ответ 1

Это простая проверка с использованием регулярного выражения. Шаблон представляет:

  • ^ должно быть началом строки
  • [A-Za-z]{4}= четыре символа AZ или az
  • 0 один ноль
  • .{6} шесть произвольных символов
  • $ должен быть концом строки

Обновлено до Swift 4

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

PS: чтобы ответить на ваш вопрос, вы получите первые 4 символа в Swift 3 с

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

а в Swift 4 просто

let first4 = String(code.prefix(4))

Ответ 2

Самый простой способ получить префикс строки - использовать

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

// Swift 4
string.prefix(4)

// Objective C
NSString *firstFour = [string substringToIndex:4];

Ответ 3

Swift 5

string.prefix(4)  // Replace 4 with number of letters you want to get from the string

Это работает на Xcode 10.2.