我需要一种方法来删除字符串的第一个字符,这是一个空格。我正在寻找一个方法,甚至是一个扩展的字符串类型,我可以用来削减字符串的字符。
当前回答
如果有人从字符串中删除额外的空格,例如= "这是演示文本,请在单词之间删除额外的空格。"
你可以在Swift 4中使用这个函数。
func removeSpace(_ string: String) -> String{
var str: String = String(string[string.startIndex])
for (index,value) in string.enumerated(){
if index > 0{
let indexBefore = string.index(before: String.Index.init(encodedOffset: index))
if value == " " && string[indexBefore] == " "{
}else{
str.append(value)
}
}
}
return str
}
结果是
"This is the demo text remove extra space between the words."
其他回答
当你想要删除所有类型的空白时(基于这个SO答案)的正确方法是:
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()
}
}
EDIT
这个答案是在问题是关于删除所有空白时发布的,问题被编辑为只提到前导空白。如果你只想删除前导空白,请使用以下方法:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
斯威夫特5 + 从字符串的前缀(开始)删除所有空白,你可以使用类似的后缀/字符串的结束
extension String {
func deletingPrefix(_ prefix: String) -> String {
guard self.hasPrefix(prefix) else { return self }
return String(self.dropFirst(prefix.count))
}
func removeWhitespacePrefix() -> String {
let prefixString = self.prefix(while: { char in
return char == " "
})
return self.deletingPrefix(String(prefixString))
}
}
你也可以使用正则表达式。
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
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: "")
关于Swift 3.0+,请参阅其他答案。这是Swift 2.x现在的一个遗留答案
如上所述,由于你对删除第一个字符感兴趣,.stringByTrimmingCharactersInSet()实例方法将很好地工作:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
你也可以让你自己的字符集来修剪你的字符串的边界,例如:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
还有一个内置的实例方法来处理删除或替换子字符串,称为stringByReplacingOccurrencesOfString(目标:字符串,替换:字符串)。它可以删除字符串中任何地方出现的空格或任何其他模式
你可以指定选项和范围,但不需要:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
这是一种简单的方法,可以删除或替换字符串中任何重复的字符模式,并且可以被链接,尽管每次遍历它都必须再次遍历整个字符串,从而降低了效率。所以你可以这样做:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
...但要花两倍的时间。
.stringByReplacingOccurrencesOfString()文档来自苹果网站
链接这些String实例方法有时可以非常方便地进行一次性转换,例如,如果你想将一个短的NSData blob转换为一行中没有空格的十六进制字符串,你可以使用Swift内置的String插值和一些修剪和替换:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
推荐文章
- 如何删除表中特定列的第一个字符?
- 我应该如何从字符串中删除所有的前导空格?- - - - - -斯威夫特
- 将整数转换为字符串,以逗号表示千
- 将JavaScript字符串中的多个空格替换为单个空格
- printf()和puts()在C语言中的区别是什么?
- jQuery -替换字符串中某个字符的所有实例
- Base64长度计算?
- 使用split("|")按管道符号拆分Java字符串
- Std::cin输入空格?
- Swift:理解// MARK
- Swift -转换为绝对值
- Swift编译器错误:“框架模块内的非模块化头”
- 从父iOS访问容器视图控制器
- 我如何在c++中创建一个随机的字母数字字符串?
- 如何使用JavaScript大写字符串中每个单词的第一个字母?