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 "";
        }

        return str.substring(start);
    }
public static String substring ( String str , int start ) { if ( str == null ) { return null ; } if ( start < 0 ) { start = str . length ( ) + start ; } if ( start < 0 ) { start = 0 ; } if ( start > str . length ( ) ) { return "" ; } 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</code>
characters from the end of the String.</p>
<p>A <code>null</code> String will return <code>null</code>.
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</code> if null String input