如何从Swift 3中的字符串中获取前四个字母?

时间:2016-10-18 16:07:09

标签: swift3

我正在尝试在swift中进行IFSCCode验证,但我遇到的问题是我无法获取字符串中的前四个字母。

IFSC代码示例:

  

ABCD0200000

这是IFSC代码的外观:

  1. IFSC代码中的前四个字符始终为字母
  2. 第五个字符总是零。
  3. 休息可以是任何事情
  4. IFSC规则的长度不应大于或小于11.长度应为11个。
  5. 我已经在Objective C中编写了ifs代码验证的代码,但我对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
    }
    

4 个答案:

答案 0 :(得分:130)

获取字符串前缀的最简单方法是使用

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

// Swift 4
string.prefix(4)

答案 1 :(得分:17)

这是使用正则表达式的简单验证。该模式代表:

  • ^必须是字符串的开头
  • [A-Za-z]{4} =四个字符A-Z或a-z
  • 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:要回答你的问题,你可以使用

获取Swift 3中的前4个字符
let first4 = code.substring(to:code.index(code.startIndex, offsetBy: 4))

并且在Swift 4中只是

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

答案 2 :(得分:2)

快速5

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

这正在使用 Xcode 10.2

答案 3 :(得分:0)

扩展以获取所有子字符串

extension String {
   func first(char:Int) -> String {
        return String(self.prefix(char))
    }

    func last(char:Int) -> String
    {
        return String(self.suffix(char))
    }

    func excludingFirst(char:Int) -> String {
        return String(self.suffix(self.count - char))
    }

    func excludingLast(char:Int) -> String
    {
         return String(self.prefix(self.count - char))
    }
 }