wffweb/src/main/java/com/webfirmframework/wffweb/util/StringUtil.java
public static String[] getAllSubstrings(final String inputString,
            final String startingWith, final String endingWith) {
        if (!inputString.contains(startingWith)
                || !inputString.contains(endingWith)) {
            return new String[0];
        }

        final int inputStringLength = inputString.length();

        final int endingWithLength = endingWith.length();
        final int maxArrayLength = inputStringLength
                / (startingWith.length() + endingWithLength);

        if (maxArrayLength == 0) {
            return new String[0];
        }

        final String[] maxSubstrings = new String[maxArrayLength];
        int startSearchFromIndex = 0;
        int count = 0;
        do {
            final int startIndex = inputString.indexOf(startingWith,
                    startSearchFromIndex);
            if (!((startIndex + 1) < inputStringLength)) {
                break;
            }
            final int indexOfEndingWith = inputString.indexOf(endingWith,
                    startIndex + 1);

            if (startIndex < 0 || indexOfEndingWith < 0) {
                break;
            }

            final int endIndex = indexOfEndingWith + endingWithLength;
            startSearchFromIndex = endIndex;
            if ((startIndex > endIndex)) {
                startSearchFromIndex = inputStringLength;
            } else {
                maxSubstrings[count] = inputString.substring(startIndex,
                        endIndex);
                count++;
            }
        } while (startSearchFromIndex < inputStringLength);

        final String[] substrings = new String[count];

        // TODO check later if System.arraycopy is better than small sized
        // arrays.
        System.arraycopy(maxSubstrings, 0, substrings, 0, count);

        return substrings;
    }
public static String[] getAllSubstrings(final String inputString,
            final String startingWith, final String endingWith) {
        if (!inputString.contains(startingWith)
                || !inputString.contains(endingWith)) {
            return new String[0];
        }

        final int inputStringLength = inputString.length();

        final int endingWithLength = endingWith.length();
        final int maxArrayLength = inputStringLength
                / (startingWith.length() + endingWithLength);

        if (maxArrayLength == 0) {
            return new String[0];
        }

        final String[] maxSubstrings = new String[maxArrayLength];
        int startSearchFromIndex = 0;
        int count = 0;
        do {
            final int startIndex = inputString.indexOf(startingWith,
                    startSearchFromIndex);
            if (!((startIndex + 1) < inputStringLength)) {
                break;
            }
            final int indexOfEndingWith = inputString.indexOf(endingWith,
                    startIndex + 1);

            if (startIndex < 0 || indexOfEndingWith < 0) {
                break;
            }

            final int endIndex = indexOfEndingWith + endingWithLength;
            startSearchFromIndex = endIndex;
            if ((startIndex > endIndex)) {
                startSearchFromIndex = inputStringLength;
            } else {
                maxSubstrings[count] = inputString.substring(startIndex,
                        endIndex);
                count++;
            }
        } while (startSearchFromIndex < inputStringLength);

        final String[] substrings = new String[count];

        // TODO check later if System.arraycopy is better than small sized
        // arrays.
        System.arraycopy(maxSubstrings, 0, substrings, 0, count);

        return substrings;
    }
public static String [ ] getAllSubstrings ( final String inputString , final String startingWith , final String endingWith ) { if ( ! inputString . contains ( startingWith ) || ! inputString . contains ( endingWith ) ) { return new String [ 0 ] ; } final int inputStringLength = inputString . length ( ) ; final int endingWithLength = endingWith . length ( ) ; final int maxArrayLength = inputStringLength / ( startingWith . length ( ) + endingWithLength ) ; if ( maxArrayLength == 0 ) { return new String [ 0 ] ; } final String [ ] maxSubstrings = new String [ maxArrayLength ] ; int startSearchFromIndex = 0 ; int count = 0 ; do { final int startIndex = inputString . indexOf ( startingWith , startSearchFromIndex ) ; if ( ! ( ( startIndex + 1 ) < inputStringLength ) ) { break ; } final int indexOfEndingWith = inputString . indexOf ( endingWith , startIndex + 1 ) ; if ( startIndex < 0 || indexOfEndingWith < 0 ) { break ; } final int endIndex = indexOfEndingWith + endingWithLength ; startSearchFromIndex = endIndex ; if ( ( startIndex > endIndex ) ) { startSearchFromIndex = inputStringLength ; } else { maxSubstrings [ count ] = inputString . substring ( startIndex , endIndex ) ; count ++ ; } } while ( startSearchFromIndex < inputStringLength ) ; final String [ ] substrings = new String [ count ] ; // TODO check later if System.arraycopy is better than small sized // arrays. System . arraycopy ( maxSubstrings , 0 , substrings , 0 , count ) ; return substrings ; }
gets all substrings as an array which starts and ends with the given
values.<br>
Note:- it will never return null instead it will return an empty array
(having length zero).

<pre>

final String[] allSubstrings = getAllSubstrings(&quot;abcd&quot;, &quot;ab&quot;, &quot;cd&quot;);
for (String each : allSubstrings) {
System.out.println(each);
}
the output will be : <i>abcd</i>
</pre>

@param inputString
the string from which the substrings will be
extracted.
@param startingWith
to match the starting substring
@param endingWith
to match the ending substring
@return the array of substrings which contains strings starting and
ending with the given {@code startingWith} and {@code endingWith}
values. Or returns an empty array (i.e an array having length
zero) if it doesn't contain.
@author WFF
@since 1.0.0
gets all substrings as an array which starts and ends with the given values . <br > Note : - it will never return null instead it will return an empty array ( having length zero ) .