Java子串从右手方向,直到特定字符

时间:2017-11-16 09:09:28

标签: java string substring

我想从输入字符串中选择特定的子字符串:

String i = "example/test/foo-foo";

如何只将子串foo-foo作为新字符串?

预期产出:

String newString = "foo-foo";

2 个答案:

答案 0 :(得分:0)

最好的方法是通过实用程序类,因为我们可以使用这种方法重用代码。此外,可以处理一些极端情况以避免运行时异常。

public class StringUtils {
    public static final String EMPTY = "";

    public static String substringAfterLast(String str, String separator) {
        if (isEmpty(str)) {
            return str;
        }
        if (isEmpty(separator)) {
            return EMPTY;
        }
        int pos = str.lastIndexOf(separator);
        if (pos == -1 || pos == (str.length() - separator.length())) {
            return EMPTY;
        }
        return str.substring(pos + separator.length());
    }

    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
}

然后使用

创建newString

String newString = StringUtils.substringAfterLast(i, "/");

答案 1 :(得分:0)

有很多选择可以解决这个问题。例如,通过正则表达式搜索/替换或类String的子串方法。

正则表达式方法:

Optional<String> resultA = Optional.of(string.replaceAll("^.*/([^/]+)$", "$1"));

子串方法:

int start = string.lastIndexOf('/');
Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null);

在stackoverflow btw上有很多更复杂的解决方案来解决这个问题,所以你可以通过彻底的stackoverflow搜索获得更好的效果。