如何在swift 3.0中替换@ with *之前的电子邮件ID文本

时间:2017-07-04 05:26:21

标签: ios string email swift3 replacewith

您好我没有找到完美的解决方案,如何在@ with * like

之前替换电子邮件ID文本

假设我的电子邮件ID为 XXXXXXX@gmail.com ,那么我想要的输出*******@gmail.com

我试试这个

    let delimiter = "@"
    let newstr = "Himmoradiya@gmail.com"
    var token = newstr.components(separatedBy: delimiter)

    let newQuery = (token[0] as NSString).replacingCharacters(
        in: NSMakeRange(0,token[0].characters.count), with: "*")

任何建议都被接受。

谢谢。

7 个答案:

答案 0 :(得分:6)

使用您可以实现的repeating尝试

  let newstr = "Himmoradiya@gmail.com"
  var token = newstr.components(separatedBy: "@")
  let newQuery = String(repeating: "*", count: token[0].characters.count)  //check array length before using index
  print(newQuery + "@" +  token[1] ) // *******@gmail.com

答案 1 :(得分:2)

编写此代码:

appno.IsValid()

答案 2 :(得分:0)

你可以这样做,

    let delimiter = "@"
    let newstr = "Himmoradiya@gmail.com"
    let arr = newstr.components(separatedBy: delimiter)

    let resultStr = "xxxxxx" + "@" + arr[1]

    print(resultStr)

答案 3 :(得分:0)

使用此功能。

func getStarred(_ email : String ) -> String
    {
        var didFoundATRO = false
        var tempString = ""
        for char in email.characters
        {
            if char == "@"
            {
                didFoundATRO = true
            }

            if !didFoundATRO
            {
                tempString += "*"
            }
            else
            {
                tempString.append(char)
            }
        }
        return tempString
    }

答案 4 :(得分:0)

        let delimiter = "@"
        var newstr = "Himmoradiya@gmail.com"
        let arr = newstr.components(separatedBy: delimiter)
        let strMail = arr.first!
        let strReplaceStr = String(repeating: "*", count: strMail.characters.count)
        newstr =  newstr.replacingOccurrences(of: strMail, with: strReplaceStr)

和输出(newstr)将是:*********** @ gmail.com

答案 5 :(得分:0)

我创建了一个字符串扩展名,例如...

extension String {

   var hideEmailPrefix: String {
      if self.contains("@") {
          var part = self.components(separatedBy: "@")
          let newText = String(repeating: "*", count: part[0].count)
          return newText + "@" + part[1]
      }
      return self
   }
}

然后在我的ViewController中:

override func viewDidLoad() {
    super.viewDidLoad()

    let email = "abc@gmail.com"
    print(email.hideEmailPrefix) // ***@gmail.com
}

答案 6 :(得分:0)

var maskEmail: String {
        let email = self
        let components = email.components(separatedBy: "@")
        var maskEmail = ""
        if let first = components.first {
            maskEmail = String(first.enumerated().map { index, char in
                return [0, 1, first.count - 1, first.count - 2].contains(index) ? 
char : "*"
            })
        }
        if let last = components.last {
            maskEmail = maskEmail + "@" + last
        }
        return maskEmail
    }



 var maskPhoneNumber: String {
    return String(self.enumerated().map { index, char in
        return [0, 3, self.count - 1, self.count - 2].contains(index) ? 
    char : "*"
    })
     }