swift - 从 var(UITextField 输入)中删除空格不起作用

Posted

技术标签:

【中文标题】swift - 从 var(UITextField 输入)中删除空格不起作用【英文标题】:swift - Remove white spaces from var(UITextField input) doesn't work 【发布时间】:2016-08-22 19:08:53 【问题描述】:

我是 swift 新手,但在 ObjectiveC 背景下,我尝试通过单击按钮将文本字段中的输入输入到 var 中。

现在,当我尝试使用“stringByTrimmingCharactersInSet”和许多其他选项删除空格时,它不起作用。这是我的代码,

    var someVariable = urlInputComponent.text!
    if someVariable.containsString(" ")
        someVariable = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
        print(someVariable)

    

我也尝试将结果分配给一个新的变量,

        let trimmed: String = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        print(trimmed)

但仍然无法删除空格。我的猜测是我对“未包装的价值”概念感到困惑,如果有人可以帮助我,那将非常有帮助。谢谢!

【问题讨论】:

如果您查看文档,someVariable.stringByTrimmingCharactersInSet 返回一个新字符串,该字符串是通过从给定字符集中包含的字符串字符的两端删除而生成的,因此它按预期工作 - 请参阅@Anbu 的答案 【参考方案1】:

尝试另一种方式

 urlInputComponent.text! = urlInputComponent.text!.stringByReplacingOccurrencesOfString(" ", withString: "")

或者试试这个

let trimmed = "".join(urlInputComponent.text!.characters.map( $0 == " " ? "" : String($0) ))
 print (trimmed)

【讨论】:

没关系,第一个选项有效。我的错,我忘记尝试了。谢谢。【参考方案2】:

这是您可以用来开始清理的代码:

extension String 
    func condenseWhitespace() -> String 
        let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter(!Swift.isEmpty($0))
        return " ".join(components)
    


var string = "  Lorem   \r  ipsum dolar   sit  amet. "
println(string.condenseWhitespace())

将此委托方法也添加到您的代码中:

 func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool 
       if range.location == 0 && string == " " 
           return false
       
       return true
 

【讨论】:

【参考方案3】:

对于 Swift 3,您可以使用:

//let myTextField.text = " Hello World"

myTextField.text.replacingOccurrences(of: " ", with: "")
// Result: "Helloworld"

【讨论】:

【参考方案4】:
let string = textField.text?.trimmingCharacters(in: .whitespaces)

【讨论】:

以上是关于swift - 从 var(UITextField 输入)中删除空格不起作用的主要内容,如果未能解决你的问题,请参考以下文章

无法从 UITextField 获取文本 - Swift - iOS

使用标识符/标签 (SWIFT) 从 UIView 获取 UITextField

如何在 Swift 中使用 UITextField 从图像中提取特定文本?

Swift - 如何从 UIPickerView 生成数据的许多 UITextField 中读取数据 [关闭]

Swift——UITextField 没有显示键盘,我无法编辑它

swift: UITextField 没有名为 text 的成员