String 如何在Swift中删除字符串中的空格?
这很有效String 如何在Swift中删除字符串中的空格?,string,swift,whitespace,String,Swift,Whitespace,这很有效 let replaced = String(map(aString.generate()) { $0 == " " ? "-" : $0 }) 但事实并非如此 let replaced = String(map(aString.generate()) { $0 == " " ? "" : $0 }) 为什么?您正在映射,因此应该保留元素的数量。在第二种情况下,删除元素。即使将“替换为--,示例也将失败 您可能更喜欢使用过滤器: let replaced = Stri
let replaced = String(map(aString.generate()) {
$0 == " " ? "-" : $0 })
但事实并非如此
let replaced = String(map(aString.generate()) {
$0 == " " ? "" : $0 })
为什么?您正在映射,因此应该保留元素的数量。在第二种情况下,删除元素。即使将
“
替换为--
,示例也将失败
您可能更喜欢使用过滤器
:
let replaced = String(filter(aString.generate()) { $0 != " "})
枚举字符串会产生一个字符序列,因此
$0
在
闭包的类型为字符
。这就编译了
{ $0 == " " ? "-" : $0 }
因为在此上下文中,“-”
被解释为字符文本
因此与$0
类型相同。但是
{ $0 == " " ? "" : $0 }
不编译,因为“
不是字符文本(并且在条件表达式a?b:c
中,操作数b
和c
必须具有相同的类型)
您可以通过将$0
转换为字符串来解决此问题:
{ $0 == " " ? "" : String($0) }
但是现在映射返回一个字符串数组
一组字符的数组。所以相反
对于String()
构造函数,您必须加入结果:
let replaced = "".join(map(aString) { $0 == " " ? "" : String($0) })
// Swift 2 / Xcode 7:
let replaced = "".join(aString.characters.map({ $0 == " " ? "" : String($0) }))
(请注意,不需要显式调用generate()
)
当然,同样的结果也可以通过
// Before Swift 3.0
let replaced = aString.stringByReplacingOccurrencesOfString(" ", withString: "")
// After Swift 3.0
let replaced = aString.replacingOccurrences(of: " ", with: "")
如果要删除字符串前后的空格(这在用户输入表单中非常有用),可以使用:
let replaced = aString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
您也可以将其直接应用于文本字段。试试这个:
let strArray0 = strArray1.map { $0.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()) }
希望这对您有所帮助如果您想从字符串中删除空白,那么只需使用stringByReplacingOccurrencesOfString函数传递字符串,如下所示
let replacedString = string.replacingOccurrences(of: " ", with: "")
对于文本字段,可以直接应用UITextField的对象
let replacedString = textField.text!.replacingOccurrences(of: " ", with: "")
这应在Swift 2.2中起作用:
let replaced = String(aString.characters.filter {$0 != " "})
在Swift 3.0中,执行以下操作
func RemoveWhiteSpace(aString:String) -> String
{
let replaced = aString.trimmingCharacters(in: NSCharacterSet.whitespaces)
return replaced
}
像这样使用
let nonWhiteSpaceStr = self.RemoveWhiteSpace(aString: "I have white Space ")
如果您想删除
字符串中任何位置的所有空白
,我确实为Swift 3.0提供了此解决方案:
或者更好(您需要对序列进行通用扩展):
您还可以替换任何其他字符集的NSCharacterSet.whitespaces和newlines
:
NSCharacterSet.controlCharacters
NSCharacterSet.whitespaces
NSCharacterSet.whitespacesAndNewlines
NSCharacterSet.decimalDigits
NSCharacterSet.letters
NSCharacterSet.lowercaseLetters
NSCharacterSet.uppercaseLetters
NSCharacterSet.nonBaseCharacters
NSCharacterSet.alphanumerics
NSCharacterSet.decomposables
NSCharacterSet.illegalCharacters
NSCharacterSet.punctuationCharacters
NSCharacterSet.capitalizedLetters
NSCharacterSet.symbols
NSCharacterSet.newline
之前的答案对我来说都不够快,所以我使用Swift 5得出了以下结论:
let nonWhitespaceString = String(whitespaceString.compactMap({ $0.isWhitespace ? nil : $0 })
对于Swift 5:
" spaces here ".replacingOccurrences(of: " ", with: "")
返回:
"spaceshere"
我使用了带空格的数字,我不知道为什么,但是这个变体删除了十进制数字中的空格,谢谢!
let nonWhitespaceString = String(whitespaceString.compactMap({ $0.isWhitespace ? nil : $0 })
" spaces here ".replacingOccurrences(of: " ", with: "")
"spaceshere"