public static String substring(String str, int start) {
        if (str == null) {
            return null;
        }

        // handle negatives, which means last n characters
        if (start < 0) {
            start = str.length() + start; // remember start is negative
        }

        if (start < 0) {
            start = 0;
        }
        if (start > str.length()) {
            return EMPTY;
        }

        return str.substring(start);
    }
<p>Gets a substring from the specified String avoiding exceptions.</p>

<p>A negative start position can be used to start {@code n}
characters from the end of the String.</p>

<p>A {@code null} String will return {@code null}.
An empty ("") String will return "".</p>

<pre>
StringUtils.substring(null, *)   = null
StringUtils.substring("", *)     = ""
StringUtils.substring("abc", 0)  = "abc"
StringUtils.substring("abc", 2)  = "c"
StringUtils.substring("abc", 4)  = ""
StringUtils.substring("abc", -2) = "bc"
StringUtils.substring("abc", -4) = "abc"
</pre>

@param str  the String to get the substring from, may be null
@param start  the position to start from, negative means
 count back from the end of the String by this many characters
@return substring from start position, {@code null} if null String input
android/android_framework/base/src/main/java/lang3/StringUtils.java