我写了一个字符串“I am good 2017 Girl
”。我需要在不使用2017 Girl
方法的情况下删除“replace
”。
输出:
I am good
答案 0 :(得分:1)
假设您使用 Java 8 ,您可以使用Stream API,使用文字" 2017 Girl
"作为分隔符模式,并使用Collectors.joining()
作为收集器来构建新的String
,而不会出现所提供的模式:
String result = Pattern.compile("2017 Girl", Pattern.LITERAL)
.splitAsStream("I am good 2017 Girl ")
.collect(Collectors.joining());
答案 1 :(得分:1)
您可以执行以下操作:
String initialInput = "I am a good 2017 girl";
String searchFor = "2017 girl";
int indexOfSearch = intialInput.indexOf(searchFor);
String reworkedInput = initialInput.substring(0, indexOfSearch);
更像罗嗦的流解决方案,但也更基本。
注意:以上内容是让您前进的灵感。 “真实”代码应该例如检查计算的索引是否> 0;确保子字符串调用不会失败。您还想阅读substring()
的javadoc以了解它的作用并将返回。
答案 2 :(得分:1)
您可以使用子字符串方法:
public static String remove(String base, String toRemove) {
if (base == null) return null;
if (toRemove == null) return base;
int start = base.indexOf(toRemove);
if (start < 0) return base;
String suffix = base.substring(start + toRemove.length());
if (start > 0)
return base.substring(0, start - 1) + suffix;
else
return suffix;
}
基本上,你搜索要删除的字符串的位置,然后连接前缀和后缀字符串(要删除的子字符串之前和之后的部分)。
此解决方案仅删除字符串一次。如果重复,并且您想要删除所有实例,则可以快速修改它以执行此操作,在后缀上执行相同操作(递归)。