1/* 2 * To change this template, choose Tools | Templates 3 * and open the template in the editor. 4 */ 5package jme3tools.navigation; 6 7import java.util.regex.Pattern; 8 9/** 10 * A collection of String utilities. 11 * 12 * @author Benjamin Jakobus 13 * @version 1.0 14 */ 15public class StringUtil { 16 17 /** 18 * Splits a newline (\n) delimited string into an array of strings 19 * 20 * @param str the string to split up 21 * @param delimiter the delimiter to use in splitting 22 * @returns an array of String objects equivalent to str 23 */ 24 public String[] splitDelimitedStr(String str, String delimiter) { 25 Pattern pttn = Pattern.compile(delimiter); 26 return pttn.split(str); 27 } 28 29 /** 30 * Right aligns a long number with spaces for printing 31 * 32 * @param num the number to be aligned 33 * @param totalLen the total length of the padded string 34 * @return the padded number 35 */ 36 public String padNum(long num, int totalLen) { 37 String numStr = Long.toString(num); 38 int len = totalLen - numStr.length(); 39 String pads = ""; 40 for (int i = 0; i < len; i++) { 41 pads += " "; 42 } 43 return pads + numStr; 44 } 45 46 /** 47 * Right aligns a long number with zeros for printing 48 * 49 * @param num the number to be aligned 50 * @param totalLen the total length of the padded string 51 * @return the padded number 52 */ 53 public String padNumZero(long num, int totalLen) { 54 String numStr = Long.toString(num); 55 int len = totalLen - numStr.length(); 56 String pads = ""; 57 for (int i = 0; i < len; i++) { 58 pads += "0"; 59 } 60 return pads + numStr; 61 } 62 63 /** 64 * Right aligns an integer number with spaces for printing 65 * 66 * @param num the number to be aligned 67 * @param totalLen the total length of the padded string 68 * @return the padded number 69 */ 70 public String padNum(int num, int totalLen) { 71 String numStr = Integer.toString(num); 72 int len = totalLen - numStr.length(); 73 String pads = ""; 74 for (int i = 0; i < len; i++) { 75 pads += " "; 76 } 77 return pads + numStr; 78 } 79 80 /** 81 * Right aligns an integer number with zeros for printing 82 * 83 * @param num the number to be aligned 84 * @param totalLen the total length of the padded string 85 * @return the padded number 86 */ 87 public String padNumZero(int num, int totalLen) { 88 String numStr = Integer.toString(num); 89 int len = totalLen - numStr.length(); 90 String pads = ""; 91 for (int i = 0; i < len; i++) { 92 pads += "0"; 93 } 94 return pads + numStr; 95 } 96 97 /** 98 * Right aligns a double number with spaces for printing 99 * 100 * @param num the number to be aligned 101 * @param wholeLen the total length of the padded string 102 * @return the padded number 103 */ 104 public String padNum(double num, int wholeLen, int decimalPlaces) { 105 String numStr = Double.toString(num); 106 int dpLoc = numStr.indexOf("."); 107 108 int len = wholeLen - dpLoc; 109 String pads = ""; 110 for (int i = 0; i < len; i++) { 111 pads += " "; 112 } 113 114 numStr = pads + numStr; 115 116 dpLoc = numStr.indexOf("."); 117 118 if (dpLoc + 1 + decimalPlaces > numStr.substring(dpLoc).length()) { 119 return numStr; 120 } 121 return numStr.substring(0, dpLoc + 1 + decimalPlaces); 122 } 123 124 /** 125 * Right aligns a double number with zeros for printing 126 * 127 * @param num the number to be aligned 128 * @param wholeLen the total length of the padded string 129 * @return the padded number 130 */ 131 public String padNumZero(double num, int wholeLen, int decimalPlaces) { 132 String numStr = Double.toString(num); 133 int dpLoc = numStr.indexOf("."); 134 135 int len = wholeLen - dpLoc; 136 String pads = ""; 137 for (int i = 0; i < len; i++) { 138 pads += "0"; 139 } 140 141 numStr = pads + numStr; 142 143 dpLoc = numStr.indexOf("."); 144 145 if (dpLoc + 1 + decimalPlaces > numStr.substring(dpLoc).length()) { 146 return numStr; 147 } 148 return numStr.substring(0, dpLoc + 1 + decimalPlaces); 149 } 150 151 /** 152 * Right aligns a float number with spaces for printing 153 * 154 * @param num the number to be aligned 155 * @param wholeLen the total length of the padded string 156 * @return the padded number 157 */ 158 public String padNum(float num, int wholeLen, int decimalPlaces) { 159 String numStr = Float.toString(num); 160 int dpLoc = numStr.indexOf("."); 161 162 int len = wholeLen - dpLoc; 163 String pads = ""; 164 for (int i = 0; i < len; i++) { 165 pads += " "; 166 } 167 168 numStr = pads + numStr; 169 170 dpLoc = numStr.indexOf("."); 171 172 if (dpLoc + 1 + decimalPlaces > numStr.substring(dpLoc).length()) { 173 return numStr; 174 } 175 return numStr.substring(0, dpLoc + 1 + decimalPlaces); 176 } 177 178 /** 179 * Right aligns a float number with zeros for printing 180 * 181 * @param num the number to be aligned 182 * @param wholeLen the total length of the padded string 183 * @return the padded number 184 */ 185 public String padNumZero(float num, int wholeLen, int decimalPlaces) { 186 String numStr = Float.toString(num); 187 int dpLoc = numStr.indexOf("."); 188 189 int len = wholeLen - dpLoc; 190 String pads = ""; 191 192 if (numStr.charAt(0) == '-') { 193 len += 1; 194 for (int i = 0; i < len; i++) { 195 pads += "0"; 196 } 197 pads = "-" + pads; 198 numStr = pads + numStr.substring(1); 199 } else { 200 for (int i = 0; i < len; i++) { 201 pads += "0"; 202 } 203 numStr = pads + numStr; 204 } 205 206 dpLoc = numStr.indexOf("."); 207 int length = numStr.substring(dpLoc).length(); 208 while (length < decimalPlaces) { 209 numStr += "0"; 210 } 211 return numStr; 212 213 } 214 215 /** 216 * Right aligns a float number with zeros for printing 217 * 218 * @param num the number to be aligned 219 * @param wholeLen the total length of the padded string 220 * @return the padded number 221 */ 222 public String padStringRight(String input, int wholeLen) { 223 for (int i = input.length(); i < wholeLen; i++) { 224 input += " "; 225 } 226 return input; 227 } 228 229 /** 230 * @param arr a boolean array to be represented as a string 231 * @return the array as a string 232 */ 233 public String boolArrToStr(boolean[] arr) { 234 String output = ""; 235 for (int i = 0; i < arr.length; i++) { 236 if (arr[i]) { 237 output += "1"; 238 } else { 239 output += "0"; 240 } 241 } 242 return output; 243 } 244 245 /** 246 * Formats a double nicely for printing: THIS DOES NOT ROUND!!!! 247 * @param num the double to be turned into a pretty string 248 * @return the pretty string 249 */ 250 public String prettyNum(double num) { 251 String numStr = (new Double(num)).toString(); 252 253 while (numStr.length() < 4) { 254 numStr += "0"; 255 } 256 257 numStr = numStr.substring(0, numStr.indexOf(".") + 3); 258 return numStr; 259 } 260} 261