如何从StringBuffer中删除字符?

时间:2014-02-18 22:50:32

标签: java regex string replace

我正在尝试制作一个加密程序,其中一部分包括在我的加密文本开头显示密码,然后显示字母后面的字母,密码中包含的字母将从字母表中删除。我试图从我的字母表StringBuffer中删除密码中的字符,但似乎没有简单的方法来做到这一点。没有方法可以自动搜索方法以查找字符的所有出现但是有一个String对象。但是,我必须用另一个字符替换一个字符,我想用一个字符替换一个字符(基本上删除它)。这是我的代码:任何帮助都将不胜感激。

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);

2 个答案:

答案 0 :(得分:1)

这可能对您有用:

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

答案 1 :(得分:0)

您没有指出您使用的是哪个版本的java,但是在7个StringBuffer中确实有replace method

replace(int start, int end, String str)
  

使用指定String中的字符替换此序列的子字符串中的字符。

将此与indexOf方法结合使用以替换所有匹配项。

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