我应该如何删除string中的所有空格? – 迅速
我需要一种方法来从string中删除第一个字符,这是一个空格。 我正在寻找一种方法,甚至是stringtypes的扩展,我可以用它来剪切string的字符。
删除前导和尾随空格:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) Swift 3 / Swift 4:
 let trimmedString = string.trimmingCharacters(in: .whitespaces) 
当你想删除各种空格(基于这个答案 )的正确方法是:
 extension String { var stringByRemovingWhitespaces: String { let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet()) return components.joinWithSeparator("") } } 
Swift 3.0+(3.0,3.1,3.2,4.0)
 extension String { func removingWhitespaces() -> String { return components(separatedBy: .whitespaces).joined() } } 
此string扩展删除string中的所有空白,而不仅仅是尾随空格…
 extension String { func replace(string:String, replacement:String) -> String { return self.stringByReplacingOccurrencesOfString(string, withString: replacement, options: NSStringCompareOptions.LiteralSearch, range: nil) } func removeWhitespace() -> String { return self.replace(" ", replacement: "") } } 
例:
 let string = "The quick brown dog jumps over the foxy lady." let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady. 
Swift 3
你可以简单地使用这个方法去除string中的所有正常空格(不考虑所有types的空格):
 let myString = " Hello World ! " let formattedString = myString.replacingOccurrences(of: " ", with: "") 
结果将是:
 HelloWorld! 
你也可以使用正则expression式。
 let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil) 
对于Swift 3.0+请参阅其他答案。 这现在是Swift 2.x的遗留答案
如上所述,由于您有兴趣去除第一个字符,因此.stringByTrimmingCharactersInSet()实例方法将很好地工作:
 myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 
你也可以制作自己的字符集来修剪你的string的边界,例如:
 myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")) 
还有一个内置的实例方法来处理删除或replace称为stringByReplacingOccurrencesOfString(target:String,replacement:String)的子string 。 它可以删除string中任何位置的空格或任何其他模式
您可以指定选项和范围,但不需要:
 myString.stringByReplacingOccurrencesOfString(" ", withString: "") 
这是一个简单的方法来删除或replacestring中任何重复的字符模式,并可以链接,虽然每次都必须再次通过整个string,降低效率。 所以你可以这样做:
  myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "") 
…但需要两倍的时间。
Apple网站上的.stringByReplacingOccurrencesOfString()文档
链接这些String实例方法有时对于一次转换非常方便,例如,如果要将一个简短的NSData blob转换为不含空格的hexstring,可以使用Swift的内置string插值和一些修剪更换:
 ("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "") 
我会用这个扩展来灵活地模仿其他集合如何实现它:
 extension String { func filter(pred: Character -> Bool) -> String { var res = String() for c in self.characters { if pred(c) { res.append(c) } } return res } } "this is a String".filter { $0 != Character(" ") } // "thisisaString" 
 如果你想要从前面(而不是后面)删除空格,你应该使用stringByTrimmingCharactersInSet 
  let dirtyString = " First Word " let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 
如果你想从string的任何地方删除空格,那么你可能想看看stringByReplacing …
对于迅速3.0
 import Foundation var str = " Hear me calling" extension String { var stringByRemovingWhitespaces: String { let components = self.components(separatedBy: .whitespaces) return components.joined(separator: "") } } str.stringByRemovingWhitespaces //Hearmecalling 
你也可以试试这个
  let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-") 
Swift 3版本
  //This function trim only white space: func trim() -> String { return self.trimmingCharacters(in: CharacterSet.whitespaces) } //This function trim whitespeaces and new line that you enter: func trimWhiteSpaceAndNewLine() -> String { return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) } 
从string中删除所有空格:
 let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))! 
Swift 3版羽毛球的答案
 extension String { func replace(_ string:String, replacement:String) -> String { return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil) } func removeWhitespace() -> String { return self.replace(" ", replacement: "") } }