java - 通过在其上应用正则表达式来替换 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, 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”参数根本不是正则表达式模式,甚至不是通配符。这只是字符串到字符串的替换。

如果我们谈论的是“org.apache.poi.util.ReplacingInputStream”。

关于java - 通过在其上应用正则表达式来替换 InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60188859/

相关文章:

java - 如何为表行循环添加 View ?

java - "Native library location"条目在 Eclipse 中有什么作用?

java - 字符串中读取的每个字符的打印错误

java - 使用输入流从 XML 文件读取属性?

java - 从服务器流式传输文件时,磁盘上的文件大小大于读取的总字节数,这是怎么回事?

java - 是否有任何 Java 流输入库保留行结束字符?

java - 检查弹出菜单是否变为非 Activity 状态/检查弹出菜单是否可见

c# - 正则表达式匹配字符串

r - 如何从字符串中删除unicode <U + 00A6>?

javascript - 使用正则表达式的谷歌地图链接验证