Browse Source

feat: 评论 id 进行隐藏

陈文艺 4 days ago
parent
commit
31cabb5d6c

+ 29 - 0
Lanu/Common/Extension/String+Extension.swift

@@ -158,3 +158,32 @@ extension String {
         return .init(width: width!, height: height!)
     }
 }
+
+extension String {
+    /// 字符串脱敏:展示前后字符,中间用 * 隐藏
+    /// - Parameters:
+    ///   - prefixCount: 开头保留的字符数量(默认 1)
+    ///   - suffixCount: 结尾保留的字符数量(默认 1)
+    ///   - maskSymbol: 隐藏符号(默认 *)
+    /// - Returns: 脱敏后的字符串
+    func hideMiddle(prefixCount: Int = 1, suffixCount: Int = 1, maskSymbol: String = "*") -> String {
+        // 空字符串直接返回
+        guard !isEmpty else { return self }
+        
+        let totalCount = count
+        // 总长度 ≤ 前后保留长度之和,直接返回原字符串
+        guard totalCount > prefixCount + suffixCount else { return self }
+        
+        // 截取开头
+        let prefix = prefix(prefixCount)
+        // 截取结尾
+        let suffix = suffix(suffixCount)
+        // 计算需要隐藏的字符数量
+        let maskLength = totalCount - prefixCount - suffixCount
+        // 生成对应数量的隐藏符号
+        let mask = String(repeating: maskSymbol, count: maskLength)
+        
+        // 拼接结果
+        return prefix + mask + suffix
+    }
+}

+ 1 - 1
Lanu/Views/Game/Skill/LNSkillCommentsView.swift

@@ -175,7 +175,7 @@ class LNSkillCommentItemView: UIView {
     
     func update(_ comment: LNSkillCommentVO) {
         avatar.showAvatar(comment.avatar)
-        nameLabel.text = comment.nickname
+        nameLabel.text = comment.nickname.hideMiddle()
         starView.score = comment.star
         commentLabel.text = comment.comment
         timeLabel.text = TimeInterval(comment.time / 1_000).tencentIMTimeDesc