在Swift中删除字符串对象中特定字符后的所有字符的更优雅的方法是什么

在Swift中删除字符串对象中特定字符后的所有字符的更优雅的方法是什么,swift,Swift,在Swift中,删除字符串对象中特定字符后的所有字符的更优雅的方法是什么 假设我有以下字符串:str.str,我需要从中删除.str。我怎么做 提前感谢。以下是一种方法: var str = "str.str" if let dotRange = str.rangeOfString(".") { str.removeRange(dotRange.startIndex..<str.endIndex) } var str=“str.str” 如果let dotRange=str.r

在Swift中,删除
字符串
对象中特定字符后的所有字符的更优雅的方法是什么

假设我有以下字符串:
str.str
,我需要从中删除
.str
。我怎么做


提前感谢。

以下是一种方法:

var str = "str.str"

if let dotRange = str.rangeOfString(".") {
    str.removeRange(dotRange.startIndex..<str.endIndex)
}
var str=“str.str”
如果let dotRange=str.rangeOfString(“.”){

str.removeRange(dotRange.startIndex.非常紧凑的方法是:

var str = "str.str"
str = str.componentsSeparatedByString(".")[0]
您可能感兴趣的另一个选项适用于您的示例“str.str”,但不符合您的规范:

str = str.stringByDeletingPathExtension
// Returns a new string made by deleting the extension (if any, and only the last)
// from the `String`

我认为这是更好的方法:

使用Swift 4更新: (现在不推荐使用子字符串)


Swift 5.1这在Swift 5中起作用,实际上只需要一行代码

textString = textString.components(separatedBy: ".")[0]

Swift 3:如果让dotRange=str.range(of:“.”{str.removeSubrange(dotRange.lowerBound..str=str.components(分隔符:(“)[0]
Great!完美的解决方案!
let smth = "element=value"

if let index = (smth.range(of: "=")?.upperBound)
{
  //prints "value"
  let afterEqualsTo = String(smth.suffix(from: index))

  //prints "element="
  let beforeEqualsToContainingSymbol = String(smth.prefix(upTo: index))
}

if let index = (smth.range(of: "=")?.lowerBound)
{
  //prints "=value"
  let afterEqualsToContainingSymbol = String(smth.suffix(from: index))

  //prints "element"
  let beforeEqualsTo = String(smth.prefix(upTo: index))
}
textString = textString.components(separatedBy: ".")[0]