// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.util; import java.net.InetAddress; import java.util.StringTokenizer; public class StringUtils { public static String addWS(String s, int totalLen) { if (s.length() >= totalLen) { return s; } int diff = totalLen - s.length(); String out = s; for (int i = 0; i < diff; ++i) { out += " "; } return out; } public static String bannerize(String s, int totalLen) { if (s.length() >= totalLen) { return s; } int diff = totalLen - s.length(); int halfDiff = diff / 2; String side = ""; for (int i = 0; i < halfDiff; ++i) { side += "*"; } return side + ' ' + s + ' ' + side; } public static String InetAddressToClientString(InetAddress address) { return address.toString().replaceAll("/", ""); } public static String toHexString(int i) { return Integer.toHexString(i).toUpperCase(); } public static String toHexString(long l) { return Long.toHexString(l).toUpperCase(); } // Well done IDA Pro. public static int hashString(String toHash) { byte[] hashArray = toHash.getBytes(); int hash = 0; int shift = 0; if (hashArray.length == 8 || hashArray.length == 7) { int ecx = 0; if (hashArray.length == 8) { ecx = hashArray[7]; } int eax = hashArray[4]; int esi = ecx * 0x8; eax ^= esi; ecx ^= 0x5A0; esi = hashArray[5]; eax <<= 4; eax ^= esi; esi = hashArray[6]; eax <<= 4; eax ^= esi; esi = hashArray[2]; eax <<= 5; eax ^= esi; esi = hashArray[1]; int edx = hashArray[0]; eax <<= 5; eax ^= esi; ecx /= 2; ecx /= 2; eax <<= 5; ecx ^= edx; eax ^= ecx; return eax; } else { for (int i = 0; i < hashArray.length; i++) { if (i == 0) shift = 0; else shift += 5; int toShift = hashArray[i] - 0x20; int shifted = (toShift << shift); hash ^= shifted; if (shift > 24) { int newShift = 0x20 - shift; int newShifted = toShift >> newShift; hash ^= newShifted; if (shift > 27) { shift -= 0x20; } } } return hash; } } public static String wordWrap(String text, int LineWidth) { StringTokenizer st = new StringTokenizer(text); int SpaceLeft = LineWidth; int SpaceWidth = 80; String outString = ""; while (st.hasMoreTokens()) { String word = st.nextToken(); if ((word.length() + SpaceWidth) > SpaceLeft) { outString += '\n' + word + ' '; SpaceLeft = LineWidth - word.length(); } else { outString += word + ' '; SpaceLeft -= (word.length() + SpaceWidth); } } return outString; } public static String truncate(String input, int length) { if (input != null && input.length() > length) input = input.substring(0, length); return input; } public static int wordCount(String input) { String workString = input.trim(); if (workString.isEmpty()) return 0; return workString.split("\\s+").length; } }