去除字符串首尾的空格:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Swift 3 / Swift 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
NSCharacterSet.whitespaceAndNewlineCharacterSet()
。 - Blip如果你想要移除所有类型的空格(基于这个SO回答),正确的方式是:
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
这个回答是在问题是要删除所有空格时发布的,问题现已编辑为只提到前导空格。如果你只想删除前导空格,请使用以下方法:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
这个字符串扩展可以删除字符串中所有的空格,不仅仅是结尾处的空格...
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(string: " ", replacement: "")
}
}
例子:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
Swift 3
您可以使用此方法简单地删除字符串中所有正常空格(不考虑所有类型的空白字符):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
结果将是:
HelloWorld!
Swift 4, 4.2 和 5
仅删除开头和结尾的空格。
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
从字符串中删除所有空格
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
str.trimmingCharacters(in: .whitespacesAndNewlines)
看起来是最简单的方法。谢谢。 - Rizwan Walayat你也可以使用正则表达式。
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
如果您使用的是Swift 3.0+,请查看其他答案。这是Swift 2.x版本的遗留回答。
如上所述,因为您想要删除第一个字符,.stringByTrimmingCharactersInSet() 实例方法非常适合:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
您还可以创建自己的字符集来修剪字符串的边界,例如:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
还有一个内置的实例方法可以处理删除或替换子字符串,称为stringByReplacingOccurrencesOfString(target: String, replacement: String)。它可以删除空格或字符串中出现的任何其他模式。
您可以指定选项和范围,但不需要:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
这是一种简单的方法,用于删除或替换字符串中任何重复的字符模式,并且可以链接使用,尽管每次通过时都必须对整个字符串进行另一个处理,这会降低效率。所以你可以这样做:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
...但这将需要两倍的时间。
.stringByReplacingOccurrencesOfString() Apple官方文档
有时候,链接多个字符串方法可以非常方便地进行一次性转换,例如,如果您想要在一行中将短NSData blob转换为没有空格的十六进制字符串,则可以使用Swift内置的字符串插值和一些修剪和替换来完成此操作:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
对于Swift 3.0
import Foundation
var str = " Hear me calling"
extension String {
var stringByRemovingWhitespaces: String {
return components(separatedBy: .whitespaces).joined()
}
}
str.stringByRemovingWhitespaces // Hearmecalling
使用正则表达式的优点:
" this is wrong contained teee xt "
.replacingOccurrences(of: "^\\s+|\\s+|\\s+$",
with: "",
options: .regularExpression)
// thisiswrongcontainedteeext
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"