嗨,我有一个问题,我必须从字符串中删除一些不需要的字符。
例如,如果字符串是 Hi Uim IMAGE [rofl] test ,那么我希望它类似于 Hi Uim rofl test 。我不想使用字符串替换对IMAGE [以及结束语]进行硬编码。除了IMAGE
之外,ALLCAPS中可以有任何单词。
我已经写了类似下面的内容,但希望可以通过更好的方式完成。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String test = "";
String in = "Hi Uim IMAGE [rofl] test IMAGE [rofl] notify the bull";
String[] split = in.split("IMAGE \\[(.*?)\\]");
System.out.println(split);
Pattern p = Pattern.compile("IMAGE \\[(.*?)\\]");
Matcher m = p.matcher(in);
int i = 0;
while (m.find()) {
String group = m.group(1);
System.out.println(group);
test = test + split[i++] + group;
}
for (int var = i; var < split.length; var++) {
test = test + split[var];
}
System.out.println(test);
}
}
这有一个问题,例如我必须遍历它。有没有更好的方法可以做到这一点。
答案 0 :(得分:2)
您可以使用
in = in.replaceAll("\\b[A-Z]+\\s*\\[([^\\]\\[]*)]", "$1");
请参见regex demo
正则表达式详细信息
\b[A-Z]+
-单词边界和1个以上大写ASCII字母\s*
-超过0个空格\[
-一个[
字符([^\]\[]*)
-第1组($1
):除[
和]
以外的任何0+个字符]
-一个]
字符。