String在Swift中删除对象中特定字符后删除所有字符的更优雅的方法是什么?
假设我有以下字符串:
str.str
我需要从中删除".str".我该怎么做?
提前致谢.
Kir*_*ins 37
这是一种方法:
var str = "str.str"
if let dotRange = str.rangeOfString(".") {
str.removeRange(dotRange.startIndex..<str.endIndex)
}
Run Code Online (Sandbox Code Playgroud)
在Swift 3中更新它是:
var str = "str.str"
if let dotRange = str.range(of: ".") {
str.removeSubrange(dotRange.lowerBound..<str.endIndex)
}
Run Code Online (Sandbox Code Playgroud)
Dom*_*her 23
我认为这是更好的方法:
使用Swift 4进行更新:(现已弃用子字符串)
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))
}
Run Code Online (Sandbox Code Playgroud)
Pli*_*kin 18
相当紧凑的方式是:
var str = "str.str"
str = str.componentsSeparatedByString(".")[0]
Run Code Online (Sandbox Code Playgroud)
您可能感兴趣的另一个选项,适用于您的示例'str.str',但不符合您的规范:
str = str.stringByDeletingPathExtension
// Returns a new string made by deleting the extension (if any, and only the last)
// from the `String`
Run Code Online (Sandbox Code Playgroud)
小智 16
这在 swift 5 中有效并且只需要一行
textString = textString.components(separatedBy: ".")[0]
Run Code Online (Sandbox Code Playgroud)
/**
* Splits a string at the first occurrence of a delimiter string
* ## Examples:
* splitAtFirst(str: "element=value", delimiter: "=") // "element", "value"
*/
public static func splitAtFirst(str: String, delimiter: String) -> (a: String, b: String)? {
guard let upperIndex = (str.range(of: delimiter)?.upperBound), let lowerIndex = (str.range(of: delimiter)?.lowerBound) else { return nil }
let firstPart: String = .init(str.prefix(upTo: lowerIndex))
let lastPart: String = .init(str.suffix(from: upperIndex))
return (firstPart, lastPart)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13531 次 |
| 最近记录: |