我有一个这样的字符串:
0x829bd824b016326a401d083b33d092293333a830
我想保留前 6 个字符并保留最后 4 个:
0x829b...a830
我该怎么做?我在 Apple 文档中看到了 .firstIndex(of: "-")
选项,但这将用于删除特定字符,因此它不适用。
我有一个这样的字符串:
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,replacing: String = "") -> Self {
return String(self.prefix(indexFromStart)) + replacing + String(self.suffix(indexFromEnd))
}
}
用例:
print(stringTest.replacingRange(indexFromStart: 6,indexFromEnd: 4,replacing: "..."))
来自 Leo Dabus 的 Master 扩展:
extension StringProtocol where Self: RangeReplaceableCollection {
func replacing<S: StringProtocol>(indexFromStart: Int,with string: S = "") -> Self {
Self.init(replacingOccurrences(of: dropFirst(indexFromStart).dropLast(indexFromEnd),with: string))
}
func replacing2<S: StringProtocol>(indexFromStart: Int,with string: S = "") -> Self {
Self.init(self.prefix(indexFromStart) + Self(string) + self.suffix(indexFromEnd))
}
func replacing3<S: StringProtocol>(indexFromStart: Int,with string: S = "") -> Self {
Self.init(self.prefix(indexFromStart) + string[...] + self.suffix(indexFromEnd))
}
}