Как получить первые четыре буквы из строки в 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.