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,Java中是否有任何字符串函数允许我提取子字符串,如QString::mid: 当索引超过字符串长度时,我希望函数返回空字符串,当索引+子字符串的长度更大时,我希望函数只返回可用字符 我已经写了一段代码,但我不相信Java中已经没有这样的功能: private static String Mid(String s, int index, int length){ if(s.length()>=length+index){ return s.substring(in

Java中是否有任何字符串函数允许我提取子字符串,如QString::mid:

当索引超过字符串长度时,我希望函数返回空字符串,当索引+子字符串的长度更大时,我希望函数只返回可用字符

我已经写了一段代码,但我不相信Java中已经没有这样的功能:

private static String  Mid(String s, int index, int length){
    if(s.length()>=length+index){
        return s.substring(index, length+index);
    }
    else if(s.length()>=index) {
        return s.substring(index, s.length());
    }
    else{
        return "";
    }
}

Java中有类似的东西吗?

听起来你只需要Math.min几次:

int start = Math.min(index, s.length());
int end = Math.min(index + length, s.length());
return s.substring(start, end);

听起来你只需要Math.min几次:

int start = Math.min(index, s.length());
int end = Math.min(index + length, s.length());
return s.substring(start, end);

简而言之,Java本身的String类上没有mid函数


但是,Apache Commons StringUtils库具有该方法和其他字符串操作函数。熟悉所有Apache commons库是很有用的,因为它们被广泛使用,并且是开源的,并且不必重新发明轮子。

简而言之,Java本身的String类上没有mid函数


但是,Apache Commons StringUtils库具有该方法和其他字符串操作函数。熟悉所有Apache commons库是很有用的,因为它们被广泛使用,并且是开源的,并且不必重新发明轮子。

虽然我喜欢这种方法,但它允许开始和结束超出字符串负边界。但由于OP也没有处理这个案例,它仍然比最初的方法更好。index=Math.maxindex,0;长度=Math.maxlength,0;我可以处理这个问题,但也许你会找到更干净的方法。虽然我喜欢这种方法,但它允许开始和结束超出字符串的负边界。但由于OP也没有处理这个案例,它仍然比最初的方法更好。index=Math.maxindex,0;长度=Math.maxlength,0;我可以处理,但也许你会想出更干净的办法。