public static String mid(String str, int pos, int len) {
        if (str == null) {
            return null;
        }
        if (len < 0 || pos > str.length()) {
            return EMPTY;
        }
        if (pos < 0) {
            pos = 0;
        }
        if (str.length() <= pos + len) {
            return str.substring(pos);
        }
        return str.substring(pos, pos + len);
    }
<p>Gets {@code len} characters from the middle of a String.</p>

<p>If {@code len} characters are not available, the remainder
of the String will be returned without an exception. If the
String is {@code null}, {@code null} will be returned.
An empty String is returned if len is negative or exceeds the
length of {@code str}.</p>

<pre>
StringUtils.mid(null, *, *)    = null
StringUtils.mid(*, *, -ve)     = ""
StringUtils.mid("", 0, *)      = ""
StringUtils.mid("abc", 0, 2)   = "ab"
StringUtils.mid("abc", 0, 4)   = "abc"
StringUtils.mid("abc", 2, 4)   = "c"
StringUtils.mid("abc", 4, 2)   = ""
StringUtils.mid("abc", -2, 2)  = "ab"
</pre>

@param str  the String to get the characters from, may be null
@param pos  the position to start from, negative treated as zero
@param len  the length of the required String
@return the middle characters, {@code null} if null String input
android/android_framework/base/src/main/java/lang3/StringUtils.java