Java String Sub String substring(final String str, int start, int end)

Here you can find the source of substring(final String str, int start, int end)

Description

From commonslang3 -> StringUtil

Gets a substring from the specified String avoiding exceptions.

A negative start position can be used to start/end n characters from the end of the String.

The returned substring starts with the character in the start position and ends before the end position.

License

Apache License

Parameter

Parameter Description
str the String to get the substring from, may be null
start the position to start from, negative means count back from the end of the String by this many characters
end the position to end at (exclusive), negative means count back from the end of the String by this many characters

Return

substring from start position to end position, null if null String input

Declaration

public static String substring(final String str, int start, int end) 

Method Source Code

//package com.java2s;
//License from project: Apache License 

public class Main {
    /**//from  ww  w  . ja  v  a  2 s.  c  o m
     * From commonslang3 -> StringUtil
     * <p>Gets a substring from the specified String avoiding exceptions.</p>
     *
     * <p>A negative start position can be used to start/end {@code n}
     * characters from the end of the String.</p>
     *
     * <p>The returned substring starts with the character in the {@code start}
     * position and ends before the {@code end} position. All position counting is
     * zero-based -- i.e., to start at the beginning of the string use
     * {@code start = 0}. Negative start and end positions can be used to
     * specify offsets relative to the end of the String.</p>
     *
     * <p>If {@code start} is not strictly to the left of {@code end}, ""
     * is returned.</p>
     *
     * <pre>
     * StringUtil.substring(null, *, *)    = null
     * StringUtil.substring("", * ,  *)    = "";
     * StringUtil.substring("abc", 0, 2)   = "ab"
     * StringUtil.substring("abc", 2, 0)   = ""
     * StringUtil.substring("abc", 2, 4)   = "c"
     * StringUtil.substring("abc", 4, 6)   = ""
     * StringUtil.substring("abc", 2, 2)   = ""
     * StringUtil.substring("abc", -2, -1) = "b"
     * StringUtil.substring("abc", -4, 2)  = "ab"
     * </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
     * @param end  the position to end at (exclusive), negative means
     *  count back from the end of the String by this many characters
     * @return substring from start position to end position,
     *  {@code null} if null String input
     */
    public static String substring(final String str, int start, int end) {
        if (str == null) {
            return null;
        }

        // handle negatives
        if (end < 0) {
            end = str.length() + end; // remember end is negative
        }
        if (start < 0) {
            start = str.length() + start; // remember start is negative
        }

        // check length next
        if (end > str.length()) {
            end = str.length();
        }

        // if start is greater than end, return ""
        if (start > end) {
            return "";
        }

        if (start < 0) {
            start = 0;
        }
        if (end < 0) {
            end = 0;
        }

        return str.substring(start, end);
    }
}

Related

  1. substring(char[] s, int start, int end)
  2. substring(final String pSource, final String pBeginBoundaryString, final String pEndBoundaryString, final int pOffset)
  3. substring(final String s, int start)
  4. substring(final String s, int start, int end)
  5. substring(final String s, int startIndex, int endIndex)
  6. substring(final String string, int fromIndex, int toIndex)
  7. substring(final String text, final int position, final int length)
  8. substring(String _text, int _idx)
  9. substring(String baseString, int start, int end)