Browse Source

增加hide

git 1 month ago
parent
commit
2b6df90779
2 changed files with 21 additions and 0 deletions
  1. 19 0
      src/main/kotlin/cn/qqck/kotlin/tools/String.kt
  2. 2 0
      src/test/kotlin/Main.kt

+ 19 - 0
src/main/kotlin/cn/qqck/kotlin/tools/String.kt

@@ -142,3 +142,22 @@ fun String.toAddrPort(): AddrPort? {
     }
     return null
 }
+
+/**
+ * 隐藏字符串中间一部分字符,用于部分信息的脱敏显示。
+ *
+ * @param hs 替代被隐藏字符的字符,默认为 '*'。
+ * @param pre_len 保留的前缀字符个数,默认为 2。
+ * @param suf_len 保留的后缀字符个数,默认为 2。
+ * @return 隐藏中间部分字符后的字符串。当字符串长度小于等于前缀长度和后缀长度之和时,原样返回字符串。
+ */
+fun String.hide(hs: Char = '*', pre_len: Int = 2, suf_len: Int = 2): String {
+    val j_slen = this.length
+    if (j_slen <= pre_len + suf_len) return this
+    val j_midlen = j_slen - pre_len - suf_len
+    val j_shide = CharArray(j_slen)
+    for (j_i in 0 until pre_len) j_shide[j_i] = this[j_i]
+    for (j_i in pre_len until pre_len + j_midlen) j_shide[j_i] = hs
+    for (j_i in j_slen - suf_len until j_slen) j_shide[j_i] = this[j_i]
+    return String(j_shide)
+}

+ 2 - 0
src/test/kotlin/Main.kt

@@ -1,6 +1,8 @@
 import cn.qqck.kotlin.tools.Rand
+import cn.qqck.kotlin.tools.Random
 
 fun main() {
+    for (j_i in 0..100) println(Random.nextLong())
     println(Rand.str.az(128))
     println(Rand.str.AZ(128))
     println(Rand.str.aZ(128))