1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package Torello.Java; import Torello.Java.ParallelArrayException; class CharArrToCharArr { static String replace( final boolean ignoreCase, final String s, final char[] matchCharsInput, final char[] replaceChars ) { // Make sure these arrays are of equal length // // NOTE: I'm telling the exception-check that "matchCharsInput" is actually named // "matchChars" - this is because the user sees that input-parameter name inside of // the method he/she is calling. Don't worry about it. ParallelArrayException.check (matchCharsInput, "matchChars", replaceChars, "replaceChars"); // The methods in this class all perform the replacements by first creating an // appropriately-sized output char[] array. The last step of each of the methods is to // invoke the String constructor: new String(char[]) where a character array is converted // into a String. final char[] cArr = s.toCharArray(); final char[] matchChars; if (ignoreCase) { matchChars = new char[matchCharsInput.length]; for (int i=0; i < matchChars.length; i++) matchChars[i] = Character.toLowerCase(matchCharsInput[i]); } else matchChars = matchCharsInput; if (ignoreCase) TOP1: for (int i=0; i < cArr.length; i++) { char c = Character.toLowerCase(cArr[i]); for (int j=0; j < matchChars.length; j++) if (c == matchChars[j]) { cArr[i] = replaceChars[j]; // If a match was found, just replace it continue TOP1; // This method, really is THAT EASY. } } else TOP2: for (int i=0; i < cArr.length; i++) { char c = cArr[i]; for (int j=0; j < matchChars.length; j++) if (c == matchChars[j]) { cArr[i] = replaceChars[j]; // If a match was found, just replace it continue TOP2; // This method, really is THAT EASY. } } // Convert the character array into a String return new String(cArr); } } |