簡體   English   中英

用字符串中的隨機字符替換字母和數字

[英]Substitute letters and numbers with random characters in a string

我想匿名化一個字符串(用戶的任意輸入),但仍然保持其結構。 因此,我想將小寫字母替換為隨機的小寫字母,將數字替換為隨機數字,將大寫字母替換為隨機的大寫字母。

我想出了這個功能,但我想知道這是最快/最好的方法嗎?

public String anonymiseString(String originalInput){
    StringBuilder input = new StringBuilder(originalInput);
    Random r = new Random();
    char currentChar;
    for(int i = 0; i < input.length(); i++) {
        currentChar = input.charAt(i);
        if(Character.isUpperCase(currentChar))
            input.setCharAt(i, (char) (r.nextInt(26) + 'A'));
        else if (Character.isLowerCase(currentChar))
            input.setCharAt(i, (char) (r.nextInt(26) + 'a'));
        else if (Character.isDigit(currentChar))
            input.setCharAt(i, (char) (r.nextInt(10) + '0'));
    }

    return input.toString();
}

可以在此處運行示例: https : //ideone.com/VNebO0

基本上,您的解決方案是好的,但是有一些方法可以使代碼更簡潔:

  • 將新的char代移到3個單獨的方法中(例如char createNewUpperCase()char createNewDigit()char createNewLetter()
  • 也將所有if邏輯也提取到單獨的方法中(例如char createNewChar(char currentChar)

這樣,從“ 單一責任原則”的角度來看,您的代碼會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM