尝试删除"<>"
个字符之间的所有字符,最多可以使用500
个字符串,之后会出现以下错误:
java.lang.OutOfMemoryError
我需要执行此操作的字符串包含21,000+
个字符。苦苦挣扎,看看为什么缩小String的大小会使它崩溃。
private static String removeGarbage(String resultString) throws IOException {
int lineLen = resultString.length();
while (resultString.indexOf("<")>=0) {
for (int i = 0; i < lineLen; i++) {
if (resultString.indexOf("<")<=0)
break;
resultString = resultString.substring(0,resultString.indexOf("<")) + resultString.substring(resultString.indexOf(">")+1, resultString.length());
}
}
return resultString;
}
答案 0 :(得分:0)
一个相当简单的正则表达式应该这样做:
String input = "{{<\"}<>}{<o}<ui'<>}}";
String output = input.replaceAll("<[^>]*>", "");
System.out.println(output); // {{}{}}
答案 1 :(得分:0)
您可以通过使用正则表达式替换来避免创建许多大String
值:
private static String removeGarbage(String resultString) {
return resultString.replaceAll("\\<.*?\\>", "");
}
\\<
与左括号匹配.*?
匹配\\>
与结束括号相匹配答案 2 :(得分:-2)
只需使用两次substring
来电indexOf
来电即可。
这里有一个扩展示例:
Integer begin = resultString.indexOf("<");
Integer end = resultString.indexOf(">", begin);
return resultString.substring(begin, end);