【问题标题】:Remove all occurrences except the last one删除除最后一个以外的所有匹配项
【发布时间】:2017-06-28 13:34:36
【问题描述】:

我想删除所有出现的 char == 。在一个字符串中,除了最后一个。

例如:

1.2.3.4

应该变成:

123.4

【问题讨论】:

  • 是的,顺序相同@JD。

标签: ios swift


【解决方案1】:
  • 找到最后一个点的位置。
  • 删除该位置之前的所有点。

例子:

var str = "1.2.3.4"
if let idx = str.range(of: ".", options: .backwards) {
    str = str.replacingOccurrences(of: ".", with: "", range: str.startIndex..<idx.lowerBound)
}
print(str) // 123.4

【讨论】:

    【解决方案2】:

    这是示例代码。按您的角色拆分,将该角色添加到最后一个元素的开头,然后将它们重新加入

    let str = "1.2.3.4"
    var array = str.components(separatedBy: ".")
    if array.count >= 1 {
        array[array.count - 1] = "." + array[array.count - 1]
    }
    print(array.joined(separator: ""))
    

    【讨论】:

    • @Fanming Ning:有字符串方法可以更轻松地做到这一点
    【解决方案3】:

    您可以将此 eailt 作为 String 的扩展重用。

    public extension String {
    
        func stringByReplacingAllButLastOccurrenceOfString(target: String, withString replaceString: String) -> String {
    
            if let idx = self.rangeOfString(target, options: .BackwardsSearch) {
                return self.stringByReplacingOccurrencesOfString(target, withString: replaceString, range: self.startIndex..<idx.first!)
            }
            return self
        }
    
    }
    

    运行几个场景,你会得到:

    strResult = "1.2.3.4.5".stringByReplacingAllButLastOccurrenceOfString(".", withString: "")
    // result "1234.5"
    
    strResult = "1234.5".stringByReplacingAllButLastOccurrenceOfString(".", withString: "")
    // result "1234.5"
    
    strResult = "1.23.4.5".stringByReplacingAllButLastOccurrenceOfString(".", withString: "")
    // result "1234.5"
    
    strResult = "1234.5".stringByReplacingAllButLastOccurrenceOfString(".", withString: "")
    // result "1234.5"
    
    strResult = "12345".stringByReplacingAllButLastOccurrenceOfString(".", withString: "")
    // result "12345"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多