Java tutorial
/* * Copyright 2003-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package replace; import org.apache.commons.lang3.StringUtils; public class Replacer { public static String unfold_regexp(String s) { if (s == null) return null; s = s.replaceAll("\n\r |\r\n |\n |\r ", ""); return s; } public static String unfold_cedric(String s) { if (s == null || s.length() < 2) { return s; } int len = s.length(); char p1 = 'x'; char p2 = 'x'; char[] sb = new char[len]; int wrtAt = 0; for (int i = 0; i < len; i++) { char c = s.charAt(i); if (' ' == c) { if ('\n' == p1) { if ('\r' == p2) { wrtAt--; } wrtAt--; } else if ('\r' == p1) { if ('\n' == p2) { wrtAt--; } wrtAt--; } else { sb[wrtAt++] = c; } } else { sb[wrtAt++] = c; } p2 = p1; p1 = c; } return new String(sb, 0, wrtAt); } public static String unfold_cedric_improved(String s) { if (s == null || s.length() < 2) { return s; } int len = s.length(); char p1 = 'x'; char p2 = 'x'; char[] chars = s.toCharArray(); int wrtAt = 0; for (int i = 0; i < len; i++) { char c = chars[i]; if (' ' == c) { if ('\n' == p1) { if ('\r' == p2) { wrtAt--; } wrtAt--; } else if ('\r' == p1) { if ('\n' == p2) { wrtAt--; } wrtAt--; } else { chars[wrtAt++] = c; } } else { chars[wrtAt++] = c; } p2 = p1; p1 = c; } return new String(chars, 0, wrtAt); } public static String unfold_cedric_ultimate(String s) { if (s == null || s.length() < 2) { return s; } char p1 = 'x'; char p2 = 'x'; char[] chars = s.toCharArray(); int wrtAt = 0; for (char c : chars) { chars[wrtAt++] = c; if (' ' == c) { if ('\n' == p1) { if ('\r' == p2) { wrtAt--; } wrtAt--; wrtAt--; } if ('\r' == p1) { if ('\n' == p2) { wrtAt--; } wrtAt--; wrtAt--; } } p2 = p1; p1 = c; } return new String(chars, 0, wrtAt); } public static String unfold_cedric_ultimate2(String s) { if (s == null || s.length() < 2) { return s; } char p1 = 'x'; char p2 = 'x'; char[] chars = s.toCharArray(); int wrtAt = 0; for (char c : chars) { chars[wrtAt++] = c; if (' ' == c) { if ('\n' == p1) { if ('\r' == p2) { wrtAt -= 3; } else { wrtAt -= 2; } } if ('\r' == p1) { if ('\n' == p2) { wrtAt -= 3; } else { wrtAt -= 2; } } } p2 = p1; p1 = c; } return new String(chars, 0, wrtAt); } public static String unfold_olivier2(String test) { // Throws NPE if null, like the original method if (test.length() < 2) return test; char[] chars = test.toCharArray(); int p = chars.length - 1; int d = p; char c, c1, c2; while (p > 0) { c = chars[p]; c1 = chars[p - 1]; if (c == ' ' && (c1 == '\n' || c1 == '\r')) { p--; if (p > 0) { c2 = chars[p - 1]; if ((c2 == '\n' || c2 == '\r') && c2 != c1) { p--; } } } else { chars[d] = c; d--; } p--; } while (p >= 0) { chars[d--] = chars[p--]; } return new String(chars, d + 1, chars.length - d - 1); } private static final String[] TODO = { "\n\r ", "\r\n ", "\r ", "\n " }; private static final String[] TO = { "", "", "", "" }; public static String unfold_common(final String string) { return StringUtils.replaceEach(string, TODO, TO); } }