jetbrick-commons/src/main/java/jetbrick/lang/StringUtils.java
public static String repeat(final String s, final int repeat) {
        if (s == null) {
            return null;
        }
        if (repeat <= 0) {
            return "";
        }
        final int inputLength = s.length();
        if (repeat == 1 || inputLength == 0) {
            return s;
        }

        final int outputLength = inputLength * repeat;
        switch (inputLength) {
        case 1:
            return repeat(s.charAt(0), repeat);
        case 2:
            final char ch0 = s.charAt(0);
            final char ch1 = s.charAt(1);
            final char[] output2 = new char[outputLength];
            for (int i = repeat * 2 - 2; i >= 0; i--, i--) {
                output2[i] = ch0;
                output2[i + 1] = ch1;
            }
            return new String(output2);
        default:
            final StringBuilder buf = new StringBuilder(outputLength);
            for (int i = 0; i < repeat; i++) {
                buf.append(s);
            }
            return buf.toString();
        }
    }
public static String repeat(final String s, final int repeat) {
        if (s == null) {
            return null;
        }
        if (repeat <= 0) {
            return "";
        }
        final int inputLength = s.length();
        if (repeat == 1 || inputLength == 0) {
            return s;
        }

        final int outputLength = inputLength * repeat;
        switch (inputLength) {
        case 1:
            return repeat(s.charAt(0), repeat);
        case 2:
            final char ch0 = s.charAt(0);
            final char ch1 = s.charAt(1);
            final char[] output2 = new char[outputLength];
            for (int i = repeat * 2 - 2; i >= 0; i--, i--) {
                output2[i] = ch0;
                output2[i + 1] = ch1;
            }
            return new String(output2);
        default:
            final StringBuilder buf = new StringBuilder(outputLength);
            for (int i = 0; i < repeat; i++) {
                buf.append(s);
            }
            return buf.toString();
        }
    }
public static String repeat ( final String s , final int repeat ) { if ( s == null ) { return null ; } if ( repeat <= 0 ) { return "" ; } final int inputLength = s . length ( ) ; if ( repeat == 1 || inputLength == 0 ) { return s ; } final int outputLength = inputLength * repeat ; switch ( inputLength ) { case 1 : return repeat ( s . charAt ( 0 ) , repeat ) ; case 2 : final char ch0 = s . charAt ( 0 ) ; final char ch1 = s . charAt ( 1 ) ; final char [ ] output2 = new char [ outputLength ] ; for ( int i = repeat * 2 - 2 ; i >= 0 ; i -- , i -- ) { output2 [ i ] = ch0 ; output2 [ i + 1 ] = ch1 ; } return new String ( output2 ) ; default : final StringBuilder buf = new StringBuilder ( outputLength ) ; for ( int i = 0 ; i < repeat ; i ++ ) { buf . append ( s ) ; } return buf . toString ( ) ; } }
<p>
Repeat a String {@code repeat} times to form a new String.
</p>

<pre>
StringUtils.repeat(null, 2) = null
StringUtils.repeat("", 0)   = ""
StringUtils.repeat("", 2)   = ""
StringUtils.repeat("a", 3)  = "aaa"
StringUtils.repeat("ab", 2) = "abab"
StringUtils.repeat("a", -2) = ""
</pre>
<p > Repeat a String { @code repeat } times to form a new String . < / p >