2014-02-18 3 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

Эта. И преобразуйте 'char' в' String' с помощью 'String.valueOf (replaceLetter)' – kukido

+0

Метод 'replace' не делает то, что ищет вопрошающий. Он заменяет начало и конец подзаголовка по указанным индексам, тогда как вопросник хочет заменить все вхождения данной строки. – user2357112

+0

Это алфавит, все буквы должны быть уникальными. Найдите позицию в алфавите с помощью 'int index = alphabet.indexOf (String.valueOf (replaceLetter))', затем замените '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

Смежные вопросы