如何忽略InputStream中的字符?

时间:2014-09-18 08:06:14

标签: java inputstream

我希望InputStream会忽略某些字符。例如,对于给定的String:

  

CH $ $罗恩$ OSY $ nclast $ ic_in $ fundibu LUM

我希望我的InputStream忽略所有$字符,因此会将其读作:

  

chronosynclastic_infundibulum

到目前为止,我发现的唯一选择是在JScience库中实现ReplaceInputStream

还有其他(更快/更常见)选项吗?

2 个答案:

答案 0 :(得分:1)

我更喜欢旧的方式:

    StringBuilder sb = new StringBuilder(); 
    int i;
    while ((i = is.read()) != -1) {
        char c = (char) i;
        if (c != '$')
            sb.append(c);
    }

    InputStream nis =  new ByteArrayInputStream(sb.toString().getBytes());

答案 1 :(得分:0)

通过操作字符串读取输入后,可以执行此操作。使用public String method replaceAll(String regex, String replacement)。至于性能,我不确定哪个会更快

使用示例:

String a = "ch$ron$osy$nclast$ic_in$fundibu$lum";
String b = a.replaceAll("[$]", "");
//b = "chronosynclastic_infundibulum"

您可以实现自己的InputStream删除此类字符,这样您就无法在应用程序级别处理此问题。