+ public final static String greatestCommonPrefix( final String a, final String b, final String separator ) {
+ if ( ForesterUtil.isEmpty( separator ) ) {
+ throw new IllegalArgumentException( "separator must not be null or empty" );
+ }
+ final String[] as = a.split( Pattern.quote( separator ) );
+ final String[] bs = b.split( Pattern.quote( separator ) );
+ final int min_length = Math.min( as.length, bs.length );
+ for( int i = 0; i < min_length; ++i ) {
+ if ( !( as[ i ].equals( bs[ i ] ) ) ) {
+ StringBuilder sb = new StringBuilder();
+ boolean first = true;
+ for( int j = 0; j < i; ++j ) {
+ if ( first ) {
+ first = false;
+ }
+ else {
+ sb.append( separator );
+ }
+ sb.append( as[ j ] );
+ }
+ return sb.toString();
+ }
+ }
+ StringBuilder sb = new StringBuilder();
+ boolean first = true;
+ for( int j = 0; j < min_length; ++j ) {
+ if ( first ) {
+ first = false;
+ }
+ else {
+ sb.append( separator );
+ }
+ sb.append( as[ j ] );
+ }
+ return sb.toString();
+ }
+