2014-02-18 53 views
0

我想製作一個加密程序,其中包括在我的加密文本的開頭顯示密碼,然後在密碼中包含的字母從字母表中刪除後顯示字母。我試圖從我的字母StringBuffer中刪除密碼中的字符,但似乎沒有簡單的方法來執行此操作。沒有方法可以自動搜索一個字符的所有出現的方法,但有一個String對象。但是,我必須用另一個字符替換一個字符,我想用一個字符替換一個字符(實質上刪除它)。這是我的代碼:任何幫助將不勝感激。如何從StringBuffer中刪除字符?

StringBuffer alphabet = new StringBuffer("abcdefghijklmnopqrstuvwxyz"); 
     for(int i = 0; i < pass.length(); i++) 
     { 
      char replacedletter = pass.charAt(i); 
      alphabet.replace(replacedletter,""); 
     } 
     System.out.println(pass + alphabet); 
+0

http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html#deleteCharAt(int) – kosa

回答

0

你不知道你使用的Java版本,但在7 StringBuffer的確實有replace method

replace(int start, int end, String str) 

替換此序列與指定的字符串的字符的一個字符串的字符。

將此與indexOf方法組合以替換所有出現的事件。

int ndx = alphabet.indexOf(String.valueOf(replacedLetter), 0); 
while (ndx > -1) { 
    alphabet.replace(ndx, ndx + 1, ""); 
    ndx = alphabet.indexOf(String.valueOf(replacedLetter), ndx); 
} 
+0

這個。然後用'String.valueOf(replacedLetter)'將'char'轉換爲'String' – kukido

+0

儘管'replace'方法並沒有做問題所在。它取代了以指定索引開始和結束的子字符串,而提問者想要替換給定字符串的所有出現。 – user2357112

+0

這是字母表,所有字母都應該是獨一無二的。用'int index = alphabet.indexOf(String.valueOf(replacedLetter))'查找字母位置,然後替換'alphabet.replace(index,index + 1,「」)' – kukido

1

這可能會爲你工作:

StringBuffer s=... 
for(char c: passcode.toCharArray()){ 
    int index=-1; 
    while((index=s.indexOf(c))!=-1){ 
    s.deleteCharAt(index); 
    } 
} 
+0

但我不知道要刪除的字符的索引。 – masonc15

+0

StringBuffer.deleteCharAt(buf.indexOf(「char」))? – user3111525