swift - 截断字符串的中间并替换它 - Swift
问题描述
我有一个这样的字符串:
0x829bd824b016326a401d083b33d092293333a830
我想保留前 6 个字符并保留最后 4 个字符:
0x829b...a830
我该怎么做?我在 Apple 文档上看到了该选项.firstIndex(of: "-")
,但那将用于删除特定字符,因此不适用。
解决方案
您可以使用的一种方式drop
,如下所示:
let stringTest: String = "0x829bd824b016326a401d083b33d092293333a830"
print(stringTest.replacingOccurrences(of: stringTest.dropFirst(6).dropLast(4), with: "..."))
// It will print: 0x829b...a830
这里扩展:
extension String {
func replacingRange(indexFromStart: Int, indexFromEnd: Int, replacing: String = "") -> Self {
return self.replacingOccurrences(of: self.dropFirst(indexFromStart).dropLast(indexFromEnd), with: replacing)
}
func replacingRange2(indexFromStart: Int, indexFromEnd: Int, replacing: String = "") -> Self {
return String(self.prefix(indexFromStart)) + replacing + String(self.suffix(indexFromEnd))
}
}
用例:
print(stringTest.replacingRange(indexFromStart: 6, indexFromEnd: 4, replacing: "..."))
Leo Dabus的主扩展:
extension StringProtocol where Self: RangeReplaceableCollection {
func replacing<S: StringProtocol>(indexFromStart: Int, indexFromEnd: Int, with string: S = "") -> Self {
Self.init(replacingOccurrences(of: dropFirst(indexFromStart).dropLast(indexFromEnd), with: string))
}
func replacing2<S: StringProtocol>(indexFromStart: Int, indexFromEnd: Int, with string: S = "") -> Self {
Self.init(self.prefix(indexFromStart) + Self(string) + self.suffix(indexFromEnd))
}
func replacing3<S: StringProtocol>(indexFromStart: Int, indexFromEnd: Int, with string: S = "") -> Self {
Self.init(self.prefix(indexFromStart) + string[...] + self.suffix(indexFromEnd))
}
}
推荐阅读
- html - CSS @font-face 不适用于多种字体粗细
- python - 转换多个分类列
- java - 成功/失败回拨房间操作
- rpa - 数据抓取 RPA - UiPath
- c# - C# - 如何使用此 api 路线提供 id 庇护所选择的所有动物的列表`/api/shelters/
/动物` - python - 使用 python 库克隆 Githubenterprise Repo
- verilog - 如何修复错误 (10170):Verilog HDL 语法错误
靠近文本“(”;期待“;” - java - 等到每个外部线程上的 RxJava 出现更多条件 - 跨线程执行单个操作
- git - 一次维护多个存储库
- raspberry-pi3 - 当任何用户在没有强制门户或免费半径的情况下连接到树莓派热点时如何在浏览器中打开 html 页面