[英]How to use two conditions (greater than and less than) for termination of a for loop in Java?
[英]How to make conditions StringUtils less than specific character in Java
我寫了一個 String 類來屏蔽用戶名;
輸入 --> Johny Holloway 期待輸出 ---> J***y H***y
及其工作。
但是,如果用戶輸入的姓名和姓氏少於 3 個字符,我喜歡更改我的代碼
例子; 名稱 BR ---> B***R ; 姓 --> KL ---> K***L
如何根據上面的示例更改我的代碼
我的代碼如下;
public class MaskWords {
public String mask(String str) {
if (StringUtils.isBlank(str)) {
return str;
}
String out = "";
for (String d : str.split("\\s+")) {
String startChar = d.substring(0, 1);
String endChar = d.substring(d.length() - 1, d.length());
out = out + startChar + "***" + endChar + " ";
}
return out.trim();
}
public List<String> mask(List<String> str) {
List<String> maskedStringList = new ArrayList<>();
for (String stringToMask : str) {
maskedStringList.add(mask(stringToMask));
}
return maskedStringList;
}
以不同的方式對待案例,對於 2 個字符,它可以是相同的。
為了使代碼更好,不要使用字符(UTF-16),而是使用 Unicode 代碼點。 有時 Unicode 代碼點、符號使用 2 個字符:中文、表情符號。 所以更一般的是:
StringBuilder out = new StringBuilder(str.length + 10);
for (String d : str.split("\\s+")) {
int codePoints = d.codePointCount(0, d.length());
if (codePoints >= 2) {
int startChar = d.codePointAt(0);
int endChar = d.codePointBefore(d.length());
out.appendCodePoint(startChar).append("***").appendCodePoint(endChar).append(' ');
} else if (codePoints == 1) {
out.append(d).append("***").append(' ');
// Or: out.append("* ");
}
}
return out.toString().trim();
使用 1 個代碼點,我創建了X***
(更好的*
),但如果需要, X***X
將被第一個覆蓋,如果 > 0。
StringBuilder
更快,它的appendCodePoint
在這里appendCodePoint
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.