Ios ExtField中没有连续的空格

Ios ExtField中没有连续的空格,ios,regex,swift,Ios,Regex,Swift,如何禁用用户在UITextField中键入两个连续空格 我尝试使用的代码如下所示: func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let myString = myUITextField.text let regex = try? NSRegularExpressio

如何禁用用户在UITextField中键入两个连续空格

我尝试使用的代码如下所示:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let myString = myUITextField.text

    let regex = try? NSRegularExpression(pattern: " +", options: .caseInsensitive)
    let trimmedString: String? = regex?.stringByReplacingMatches(in: myString!, options: [], range: NSRange(location: 0, length: (myString?.characters.count)!), withTemplate: " ")

    myUITextField.text = trimmedString

    let maxLegnth = 40
    let currentString: NSString = textField.text! as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString

    return newString.length <= maxLegnth
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
让myString=myUITextField.text
让regex=try?NSRegularExpression(模式:“+”,选项:。不区分大小写)
让trimmedString:String?=regex?.stringByReplacingMatches(in:myString!,选项:[],范围:NSRange(位置:0,长度:(myString?.characters.count)!),带模板:“”)
myUITextField.text=trimmedString
设maxLegnth=40
让currentString:NSString=textField.text!作为NSString
让newString:NSString=currentString.replacingCharacters(在:范围内,带:字符串)作为NSString

return newString.length您可以将文本字段中当前显示的文本与正在添加的新文本相结合。然后,您可以检查是否出现了
“”
。如果检测到此字符串,则返回
false

将“”(两个空格)替换为“”(一个空格)如何一直如此。

Swift 3,Xcode 8.2

防止用户键入空格键

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    //Restrict
    if string == " " && textField.text?.characters.last == " "{
        return false
    }else{
        return true
    }
}

只需检查用户输入的上一个字符和当前字符

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

if textField.text?.characters.last == " "  && string == " "{

// If consecutive spaces entered by user               
 return false
}

// If no consecutive space entered by user

return true

}

试试这个正则表达式

var pattern=/(\s+){2,}/

 if(pattern.test(stringToCheck))
     {
    // string contain more than one consecutive space 
     }
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
设maxLegnth=40
让currentString:NSString=textField.text!作为NSString
让newString:NSString=currentString.replacingCharacters(在:范围内,带:字符串)作为NSString
如果textField.text?.characters.last==“”&string==“”{
返回错误
}否则{

return newString.length从逻辑上讲,强制用户不键入两个连续的空格是不正确的。如果要求最多输入40个字符,则可以。除此之外,您不能让他们按自己的喜好键入内容。@PraveenKumar您可以根据验证要求强制避免在文本字段中键入错误的数据目的或防止攻击。是的,我同意。这取决于要求。@Tarek必须确认我们的要求。如果要求说没有必要,这可以节省他的工作时间。检查我的回答是的,要求不能有2个连续空格。1个空格可以。1个空格+1个其他字符+1个空格+1个其他字符acter也很好。这不起作用。在第一个空格后,用户将无法输入任何字符。请检查我的答案。@Maddy我不是在说你的答案,我是在说这个answer@Dhruv字符串参数永远无法同时获得2个空格,因此它将始终返回true@Nirav D,@Maddy:请查看更新的解决方案n、 这个功能什么时候起作用called@NehalJaisalmeria每次用户在
UItextfield
中输入内容时。有关详细信息,请查看
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let maxLegnth = 40
    let currentString: NSString = textField.text! as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString

    if textField.text?.characters.last == " " && string == " " {
        return false
    } else {
        return newString.length <= maxLegnth
    }
}