我想从输入字符串中选择特定的子字符串:
String i = "example/test/foo-foo";
如何只将子串foo-foo
作为新字符串?
预期产出:
String newString = "foo-foo";
答案 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搜索获得更好的效果。