如何使用Java中的特定字符串从String中删除String?

时间:2017-01-21 12:49:23

标签: java

我写了一个字符串“I am good 2017 Girl”。我需要在不使用2017 Girl方法的情况下删除“replace”。

输出:

I am good

3 个答案:

答案 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;
}

基本上,你搜索要删除的字符串的位置,然后连接前缀和后缀字符串(要删除的子字符串之前和之后的部分)。

此解决方案仅删除字符串一次。如果重复,并且您想要删除所有实例,则可以快速修改它以执行此操作,在后缀上执行相同操作(递归)。