Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java子字符串从右方向开始,直到指定字符_Java_String_Substring - Fatal编程技术网

Java子字符串从右方向开始,直到指定字符

Java子字符串从右方向开始,直到指定字符,java,string,substring,Java,String,Substring,我想从输入字符串中选择特定的子字符串: String i = "example/test/foo-foo"; int start = string.lastIndexOf('/'); Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null); 如何仅获取子字符串foo foo作为新字符

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

String i = "example/test/foo-foo";
int start = string.lastIndexOf('/');
Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null);
如何仅获取子字符串foo foo作为新字符串

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

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

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

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;
    }
}
int start = string.lastIndexOf('/');
Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null);
然后使用

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

字符串newString=StringUtils.substringAfterLasti,/

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

int start = string.lastIndexOf('/');
Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null);
正则表达式方法:

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);
子串方法:

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

顺便说一句,stackoverflow上有很多更详细的解决方案,因此您最好进行彻底的stackoverflow搜索。

您有没有看过String提供的方法?int index=i.lastIndexOf/;字符串名称=i.substringindex+1;字符串i=示例/test/foo-foo;字符串[]温度=i.split/;系统输出打印温度[温度长度-1];
int start = string.lastIndexOf('/');
Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null);