用Java替换几个分隔符中的所有子字符串

时间:2014-02-26 15:51:58

标签: java string

也许问题似乎是愚蠢的,但我必须处理几个Gbs的文本文件进行预处理。

在Java中是否有任何有效且可能优雅的方法从String中删除用作分隔符的两个String之间的所有子串?例如。当您定义两个分隔符时,请说([]),然后从String “嗨([bla bla])如何([test])你?”一个新的String “你好,你好吗?”必须退回。

我找到的最简单方法如下:

String text = "Hi ([bla bla]) how are ([test]) you?";
while(text.contains("([") && text.contains("])")){
  text = text.substring(0, text.indexOf("(["))+
        text.substring(text.indexOf("])")+"]))".length());
}
System.out.println(text);  //Prints "Hi how are you?" 

其中([])是分隔符。

全球使用的外部库(例如Apache库)也是受欢迎的,但首选标准Java API。

3 个答案:

答案 0 :(得分:3)

只要不涉及嵌套,您就可以使用正则表达式:

text = text.replaceAll("\\(\\[.*?\\]\\)", "");

如果你想处理空格:

text = text.replaceAll("\\s*\\(\\[.*?\\]\\)\\s*", " ");

答案 1 :(得分:0)

尝试替换所有

input.replaceAll("\[[^\]]*\]", "");

答案 2 :(得分:0)

正则表达式是更简单的方法,但可能在大文件上,Java使用二进制搜索的效率更高,即使用RandomAccessFile读取每字节字节 - http://docs.oracle.com/javase/6/docs/api/java/io/RandomAccessFile.html