我有一个很长的字符串。在字符串的某处,有一部分以&*(
开头,然后有一些文字,以)(*
结尾。
如何在开头和结尾删除此文本以及特殊符号?
示例:
Bla bla bla &*( asd asd asd )(* bla bla bla. Yadda yadda yadda &*( akls lkja )(* yadda.
我想输出
Bla bla bla bla bla bla. Yadda yadda yadda yadda.
答案 0 :(得分:4)
使用replaceAll
要执行此操作:
String s ="Bla bla bla &*( asd asd asd )(* bla bla bla. Yadda yadda yadda &*( akls lkja )(* yadda.Bla bla bla &*( asd asd asd )(* bla bla bla. Yadda yadda yadda &*( akls lkja )(* yadda.";
System.out.println(s.replaceAll("\\&\\*\\(.+?\\)\\(\\*", ""));
答案 1 :(得分:1)
您可以使用.replaceAll()
:
String replaced = "Bla bla bla &*( asd asd asd )(* bla bla bla. Yadda yadda yadda &*( akls lkja )(* yadda."
.replaceAll("\\Q&*(\\E.+?\\Q)(*\\E", "");
这是正则表达式:
\Q&*(\E.+?\Q)(*\E
\Q
开始引用文字序列。&*(
文字字符序列"& *(" 。\E
结束.+?
匹配多个字符,尽可能少(懒惰)\Q
开始引用文字序列。)(*
字面字符序列")(*" 。\E
结束这是regex demo!
答案 2 :(得分:0)
对于字符串操作,我建议使用StringBuilder。 StringBuilder是可变的,不会为每个操作创建一个新字符串
您可以尝试以下操作:
final String START_INDEX = "&*(";
final String END_INDEX = ")(*";
String str = "Bla bla bla &*( asd asd asd )(* bla bla bla. Yadda yadda yadda &*( akls lkja )(* yadda.";
StringBuilder sbuild = new StringBuilder(str);
for(int start = sbuild.indexOf(START_INDEX); start != -1;){
int end = sbuild.indexOf(END_INDEX);
sbuild.replace(start, end + END_INDEX.length(), "");
start = sbuild.indexOf(START_INDEX);
}
System.out.println(sbuild.toString());