/** * Replace given characters in a given string builder. * The number of characters to replace has to match to number of * characters serving as a replacement. * * @param sb string builder containing a string to be modified * @param from characters to replaced * @param to replacement characters * @return original string builder with replaced characters. */ public static StringBuilder replace(StringBuilder sb, CharSequence from, CharSequence to) { assert from.length() == to.length(); for (int i=0; i<sb.length(); i++) for (int j=0; j<from.length(); j++) if (sb.charAt(i)==from.charAt(j)) sb.setCharAt(i, to.charAt(j)); return sb; }
/** * Joins array elements to string. * * @param arr Array. * @return String. */ @Nullable public static String compactArray(Object[] arr) { if (arr == null || arr.length == 0) return null; String sep = ", "; StringBuilder sb = new StringBuilder(); for (Object s : arr) sb.append(s).append(sep); if (sb.length() > 0) sb.setLength(sb.length() - sep.length()); return U.compact(sb.toString()); }
public BSONTest() { for (int x = 8; x < 2048; x *= 2) { StringBuilder buf = new StringBuilder(); while (buf.length() < x) buf.append(x); _data.add(buf.toString()); } }
@Test public void testOBBig1() { BasicOutputBuffer a = new BasicOutputBuffer(); StringBuilder b = new StringBuilder(); for (String x : _data) { a.write(x.getBytes()); b.append(x); } assertEquals(a.asString(), b.toString()); }
/** * Returns compact class host. * * @param obj Object to compact. * @return String. */ @Nullable public static Object compactObject(Object obj) { if (obj == null) return null; if (obj instanceof Enum) return obj.toString(); if (obj instanceof String || obj instanceof Boolean || obj instanceof Number) return obj; if (obj instanceof Collection) { Collection col = (Collection) obj; Object[] res = new Object[col.size()]; int i = 0; for (Object elm : col) res[i++] = compactObject(elm); return res; } if (obj.getClass().isArray()) { Class<?> arrType = obj.getClass().getComponentType(); if (arrType.isPrimitive()) { if (obj instanceof boolean[]) return Arrays.toString((boolean[]) obj); if (obj instanceof byte[]) return Arrays.toString((byte[]) obj); if (obj instanceof short[]) return Arrays.toString((short[]) obj); if (obj instanceof int[]) return Arrays.toString((int[]) obj); if (obj instanceof long[]) return Arrays.toString((long[]) obj); if (obj instanceof float[]) return Arrays.toString((float[]) obj); if (obj instanceof double[]) return Arrays.toString((double[]) obj); } Object[] arr = (Object[]) obj; int iMax = arr.length - 1; StringBuilder sb = new StringBuilder("["); for (int i = 0; i <= iMax; i++) { sb.append(compactObject(arr[i])); if (i != iMax) sb.append(", "); } sb.append("]"); return sb.toString(); } return U.compact(obj.getClass().getName()); }
public String getClasspath() { final StringBuilder sb = new StringBuilder(); boolean firstPass = true; final Enumeration<File> componentEnum = this.pathComponents.elements(); while (componentEnum.hasMoreElements()) { if (!firstPass) { sb.append(System.getProperty("path.separator")); } else { firstPass = false; } sb.append(componentEnum.nextElement().getAbsolutePath()); } return sb.toString(); }
/** Prints entry information. */ void printEntry(ZipEntry e) throws IOException { if (vflag) { StringBuilder sb = new StringBuilder(); String s = Long.toString(e.getSize()); for (int i = 6 - s.length(); i > 0; --i) { sb.append(' '); } sb.append(s).append(' ').append(new Date(e.getTime()).toString()); sb.append(' ').append(e.getName()); output(sb.toString()); } else { output(e.getName()); } }
// pretty print Matrix(2D array of doubles) public static String pprint(double[][] arr,DecimalFormat dformat) { int colDim = 0; for( double[] line : arr ) colDim = Math.max(colDim, line.length); StringBuilder sb = new StringBuilder(); int max_width = 0; int[] ilengths = new int[colDim]; Arrays.fill(ilengths, -1); for( double[] line : arr ) { for( int c = 0; c < line.length; ++c ) { double d = line[c]; String dStr = dformat.format(d); if( dStr.indexOf('.') == -1 ) dStr += ".0"; ilengths[c] = Math.max(ilengths[c], dStr.indexOf('.')); int prefix = (d >= 0 ? 1 : 2); max_width = Math.max(dStr.length() + prefix, max_width); } } for( double[] line : arr ) { for( int c = 0; c < line.length; ++c ) { double d = line[c]; String dStr = dformat.format(d); if( dStr.indexOf('.') == -1 ) dStr += ".0"; for( int x = dStr.indexOf('.'); x < ilengths[c] + 1; ++x ) sb.append(' '); sb.append(dStr); if( dStr.indexOf('.') == -1 ) sb.append('.'); for( int i = dStr.length() - Math.max(0, dStr.indexOf('.')); i <= 5; ++i ) sb.append('0'); } sb.append("\n"); } return sb.toString(); }
public static String calculateCrc32(String source) { CRC32 crc32 = new CRC32(); Adler32 adler32 = new Adler32(); adler32.update(source.getBytes()); System.out.println(adler32.getValue()); crc32.update(source.getBytes()); StringBuilder builder = new StringBuilder(8); System.out.println(crc32.getValue()); System.out.println(Long.toHexString(crc32.getValue())); builder.append(Long.toHexString(crc32.getValue())); if (builder.length() < 8) { builder.append(CHAR_TEMPLATE, 0, 8 - builder.length()); } System.out.println(builder.toString()); return builder.toString(); }
public static String sampleToString(int[] val, int max) { if (val == null || val.length < max) return Arrays.toString(val); StringBuilder b = new StringBuilder(); b.append('['); max -= 10; int valMax = val.length -1; for (int i = 0; ; i++) { b.append(val[i]); if (i == max) { b.append(", ..."); i = val.length - 10; } if ( i == valMax) { return b.append(']').toString(); } b.append(", "); } }
public static String getNextName(String base) { StringBuilder sb = new StringBuilder(); sb.append(base); sb.append(nextEntryNumber++); return sb.toString(); }
/* ------------------------------------------------------------------------------------------------------- This method: This method: -- Takes in three paramters: 1. array - this is the byte array that actually holds the document contents 2. md5Hases - holds the entire hash values of the document 3. Divisor1/Divisor2/divisor3... - main and back up divisors 5. The remainder we are looking for 6/7. min/max boundaries -- We will start running the karb rabin algorithm -- We will find the boundaries using mod values and once they equal the mod value we have stored -- we also have the divsor2/3 .. which are backup divisors. If we don't find a boundary by the divisor1 once we hit the maxBoundary -- we will see if we have one with divisor2, if not, then we will see if we have one with divisor3 and so on -- We will hash everything in that hash boundary and store it -------------------------------------------------------------------------------------------------------- */ private static void runTddd( byte[] array, ArrayList<Long> md5Hashes, long divisor1, long divisor2, long divisor3, long remainder, long minBoundary, long maxBoundary) { int documentStart = 0; // used to keep track of where the boundaries are boolean match = false; // used to ck if we encountered a match int backUpBreakPoint = -1; // used to store the backup breakpoint int secondBackUpBreakPoint = -1; // used with the divisor3 StringBuilder builder = new StringBuilder(); int i = documentStart + (int) minBoundary - 1; // so we start at the minimum // loop through all the values in the document for (; i < md5Hashes.size() - 1; ++i) { // if ((i - documentStart + 1) < minBoundary) // if the size of this boundary is less than // the min, continue looping // continue; /*----------------------------------------------------------------- - If the mod of this equals the modvalue we defined, then - this is a boundary ------------------------------------------------------------------*/ if ((md5Hashes.get(i - 1) + md5Hashes.get(i) + md5Hashes.get(i + 1)) % divisor1 == remainder) // ck if this equals the mod value { // Hash all the values in the range (documentStart,current(i)) // Remember we only want to hash the original VALUES from the array that contains the // original // content of the file. Not the hash values in the md5Hash Array for (int j = documentStart; j <= i; ++j) { builder.append(array[j]); // store everything upto the current value } String original = builder.toString(); // if the string is a perfect match ( hash and original string) if (HashClass.is_string_match(original, table)) // iinsert the hash in the table) coverage += i - documentStart + 1; // this is the amount of bytes we saved documentStart = i + 1; // set this as the beginning of the new boundary backUpBreakPoint = -1; // reset this secondBackUpBreakPoint = -1; numOfPieces++; // increment the num of pieces i = i + (int) minBoundary - 1; // skip all the way here builder.setLength(0); // reset the stringBuilder for the next round } else if ((md5Hashes.get(i - 1) + md5Hashes.get(i) + md5Hashes.get(i + 1)) % divisor2 == remainder) { // check if this is the backup point backUpBreakPoint = i; // this is the backup breakpoint } else if ((md5Hashes.get(i - 1) + md5Hashes.get(i) + md5Hashes.get(i + 1)) % divisor2 == remainder) { secondBackUpBreakPoint = i; // set the second backup point } if ((i - documentStart + 1) >= maxBoundary) { // we have reached the maximum // ck if we have a backUpbreakpoint int point; if (backUpBreakPoint != -1) // if we do, set this as the boundary point = backUpBreakPoint; else if (secondBackUpBreakPoint != -1) { point = secondBackUpBreakPoint; // if we don't have a first break point, find the second } else point = i; // else this current value of i is the breakpoint // Hash all the values in the range (documentStart,current(i)) // Remember we only want to hash the original VALUES from the array that contains the // original // content of the file. Not the hash values in the md5Hash Array for (int j = documentStart; j <= point; ++j) { builder.append(array[j]); // store everything upto the current value } String original = builder.toString(); if (HashClass.is_string_match(original, table)) coverage += point - documentStart + 1; // this is the amount of bytes we saved numOfPieces++; // increment the num of pieces documentStart = point + 1; // set this as the beginning of the new boundary backUpBreakPoint = -1; // reset this secondBackUpBreakPoint = -1; // reset the secondBackUp point i = point + (int) minBoundary - 1; // skip all the way here ; builder.setLength(0); // reset the stringBuilder for the next round } } // end of the for loop // ------------------------------------------------------------------------------------------- // we are missing the last boundary, so hash that last value // We will also check against our values of the strings we already have, and if we encountered // this // already, then we will simply increment the counter, otherwise we will insert it in the // hashtable // and increase our miss counter // ---------------------------------------------------------------------------------------------- for (int j = documentStart; j < array.length; ++j) { builder.append(array[j]); } // only compute hash and insert into our hashtable only if the string buffer isn't empty String original = builder.toString(); if (HashClass.is_string_match(original, table)) coverage += array.length - documentStart; // this is the amount of bytes we saved numOfPieces++; // increment the num of pieces } // end of the method