我的字符串看起来像这样:
<start> <start> some sentence <stop> is a sentence <stop>
我如何使这些字符串像这样:
<start> some sentence is a sentence <stop>
到目前为止,我正在使用正则表达式删除双重启动
string.replace("<start> <start>","<start>");
但是我仍然坚持要删除中间停止标签。
答案 0 :(得分:2)
可以这样做replaceFirst
是String
类方法,它取代了该字符串的第一个子字符串,该子字符串与给定的替换项匹配给定的正则表达式。
String finalResult=string.replaceFirst("<start>", "" ).replaceFirst("<stop>", "" )
答案 1 :(得分:0)
如果您确定开始和停止标签中的开始和停止标签结尾。您也可以手动对它们进行硬编码,并删除其间的所有标签。
public class myclass {
public static void main(String[] args) {
String x = "<start> <start> some sentence <stop> is a sentence <stop>";
String finalResult="<start>"+x.replaceAll("<[^>]+>", "")+"<stop>";
System.out.println(finalResult);
}
}
答案 2 :(得分:0)
一种方法是,您可以删除所有实例,然后按照您想要的方式修复String:
private static final String START = "<start>";
private static final String STOP = "<stop>";
private boolean containsKeywords(final String string) {
return string.contains(START) ||
string.contains(STOP);
}
private String stripAllStartStop(final String string) {
string.replaceAll(START, "");
string.replaceAll(STOP, "");
}
private addStartStop(final String string) {
StringBuilder sb = new StringBuilder();
sb.add(START);
sb.add(string);
sb.add(STOP);
return sb.build();
}
/**
* Cleanup the sequence of START and STOP tokens in a String.
*/
public String sanitizeString(final String string) {
if (containsKeywords(string)) {
return addStartStop(stripAllStartStop(string));
}
}
更好,更清晰,更具可扩展性的方式类似,但使用StrSubstitutor
使用查找Map
进行替换。
答案 3 :(得分:0)
您想要移除的停靠点由右侧和左侧的空格包裹使用,作为删除您需要的空格的标准..
string.replace(" <stop> ","");