我应该如何删除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: "") } }