Java 通过在InputStream上应用regex替换它
我有一个Java 通过在InputStream上应用regex替换它,java,regex,inputstream,Java,Regex,Inputstream,我有一个InputStream,需要对其应用正则表达式。我需要一个OutputStream作为返回值,因为它应该被转发到api。我这样做: // get byte stream InputStream input = ...; OutputStream output; ReplacingInputStream test = new ReplacingInputStream(input, "\\s+", " "); String inputText = IOUtils.toString(test
InputStream
,需要对其应用正则表达式。我需要一个OutputStream
作为返回值,因为它应该被转发到api。我这样做:
// get byte stream
InputStream input = ...;
OutputStream output;
ReplacingInputStream test = new ReplacingInputStream(input, "\\s+", " ");
String inputText = IOUtils.toString(test, StandardCharsets.UTF_8);
System.out.println(inputText); // nothing is changed
但在输入中没有任何更改。我不知道怎么做,所以我做了
String inputText = IOUtils.toString(input, StandardCharsets.UTF_8);
inputText = inputText.replaceAll("\\s+", " ").trim(); //
System.out.println(inputText); // Changed
这是快速而简单的,但当然不能很好地扩展到大型流(因为可能内存不足)看起来“pattern”参数根本不是Regexp模式,甚至不是通配符。这只是一个字符串对字符串的替换
如果我们谈论的是“org.apache.poi.util.ReplacingInputStream”。是否使用test
对象作为最终结果?是否使用test
作为InputStream
i.o.input
?比如:InputStream-oldInput;InputStream输入=新的ReplacingInputStream(旧的输入,“\\s+”,”)代码>为清晰起见,我已更新。请检查是否有帮助