我正在寻找答案,但尚未找到答案,所以:
例如:我有一个像"#blablub"我想在开头删除#,我只需删除第一个字符。但是,如果我有一个字符串" ##### bla#blub"我只想在第一个字符串的开头删除所有#,我不知道如何解决。
我的目标是获得一个像这样的字符串" bla#blub",否则就可以轻松使用replaceOccourencies ......
我希望你能提供帮助。
答案 0 :(得分:7)
func ltrim(str: String, _ chars: Set<Character>) -> String {
if let index = str.characters.indexOf({!chars.contains($0)}) {
return str[index..<str.endIndex]
} else {
return ""
}
}
func ltrim(_ str: String, _ chars: Set<Character>) -> String {
if let index = str.characters.index(where: {!chars.contains($0)}) {
return str[index..<str.endIndex]
} else {
return ""
}
}
用法:
ltrim("#####bla#blub", ["#"]) //->"bla#blub"
答案 1 :(得分:4)
var str = "###abc"
while str.hasPrefix("#") {
str.remove(at: str.startIndex)
}
print(str)
答案 2 :(得分:3)
我最近构建了一个String扩展,它将从开头,结尾或两者中“清理”一个字符串,并允许你指定一组你想要删除的字符。请注意,这不会从String的内部删除字符,但扩展它来执行此操作会相对简单。 (NB使用Swift 2构建)
enum stringPosition {
case start
case end
case all
}
func trimCharacters(charactersToTrim: Set<Character>, usingStringPosition: stringPosition) -> String {
// Trims any characters in the specified set from the start, end or both ends of the string
guard self != "" else { return self } // Nothing to do
var outputString : String = self
if usingStringPosition == .end || usingStringPosition == .all {
// Remove the characters from the end of the string
while outputString.characters.last != nil && charactersToTrim.contains(outputString.characters.last!) {
outputString.removeAtIndex(outputString.endIndex.advancedBy(-1))
}
}
if usingStringPosition == .start || usingStringPosition == .all {
// Remove the characters from the start of the string
while outputString.characters.first != nil && charactersToTrim.contains(outputString.characters.first!) {
outputString.removeAtIndex(outputString.startIndex)
}
}
return outputString
}
答案 3 :(得分:0)
无正则表达式的解决方案是:
func removePrecedingPoundSigns(s: String) -> String {
for (index, char) in s.characters.enumerate() {
if char != "#" {
return s.substringFromIndex(s.startIndex.advancedBy(index))
}
}
return ""
}
答案 4 :(得分:0)
从OOPer的回应开始的快速3扩展:
extension String {
func leftTrim(_ chars: Set<Character>) -> String {
if let index = self.characters.index(where: {!chars.contains($0)}) {
return self[index..<self.endIndex]
} else {
return ""
}
}
}