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