Java 如何忽略InputStream中的字符?
我想要一个Java 如何忽略InputStream中的字符?,java,inputstream,Java,Inputstream,我想要一个InputStream,它将忽略某些字符。例如,对于给定字符串: ch$ron$osy$nclast$ICU in$fundibu$lum 我希望我的InputStream忽略所有$字符,因此它将被读取为: 时辰综合性漏斗 到目前为止,我发现的唯一选择是在JScience库中实现 是否有其他(更快/更常见的)选项可以执行此操作 我更喜欢老办法: StringBuilder sb = new StringBuilder(); int i; while ((i =
InputStream
,它将忽略某些字符。例如,对于给定字符串:
ch$ron$osy$nclast$ICU in$fundibu$lum
我希望我的InputStream
忽略所有$
字符,因此它将被读取为:
时辰综合性漏斗
到目前为止,我发现的唯一选择是在JScience库中实现
是否有其他(更快/更常见的)选项可以执行此操作 我更喜欢老办法:
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());
您可以在读取输入后通过操纵字符串来执行此操作。使用。至于性能,我不确定哪一个会更快 示例使用:
String a = "ch$ron$osy$nclast$ic_in$fundibu$lum";
String b = a.replaceAll("[$]", "");
//b = "chronosynclastic_infundibulum"
您可以实现自己的
InputStream
来删除这些字符,这样您就不会在应用程序级别处理这些字符。您可以在读取输入后通过操纵字符串来完成这项操作。使用公共字符串方法replaceAll(stringregex,stringreplacement)至于性能,我不确定哪种方法会更有效faster@Multithreader这肯定不会有效率。很难说这有多有效。或者JScience库的效率有多高。他们可能会使用replaceAll来实现……谁知道呢?您需要进行性能测量,以便得出结论……正如多线程程序所说。我记得读过关于替换(regex)的连续迭代对性能的影响,但是当涉及到各种形式的字符串替换时,很难说“这种方法更好”。@multi-threader不,他们是以更复杂的方式来做的。正如我提到的,我想要一个InputStream,而不仅仅是在控制台中编写它。如果你可以跳过$
,rest就是转换回InputStream。为方便起见,我添加了代码。