Mega Code Archive

 
Categories / Java / Data Type
 

Replace String With Escape

/**  * com.sony.csl.j2me.util  *    * Description:  *   Utilities for J2ME CLDC/MIDP applications  *     *   Released under OSS terms (see below) as part of LocationAPITools library:  *     - http://code.google.com/p/locationapitools  *     *   This code was developed within the scope of the NoiseTube project at  *   Sony Computer Science Laboratory (CSL) Paris, for more information please refer to:   *     - http://noisetube.net  *     - http://code.google.com/p/noisetube  *     - http://www.csl.sony.fr  *   * Author:  *   Matthias Stevens (Sony CSL Paris / Vrije Universiteit Brussel)  *   Contact: matthias.stevens@gmail.com  *     * License:   *   Copyright 2008-2009 Sony CSL Paris  *   *   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 com.sony.csl.j2me.util; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import java.util.Vector; /**  * A class with useful string operations  *   * @author mstevens  *  */ public class StringUtils {      static public int countOccurences(String toSearch, char toFind)   {     int count = 0;     for(int i = 0; i < toSearch.length(); i++)       if(toSearch.charAt(i) == toFind)         count++;     return count;   }      static public String addTabsFront(String string, int tabs)   {     StringBuffer bff = new StringBuffer();     for(int t = 0; t < tabs; t++)       bff.append("\t");     bff.append(string);     return bff.toString();       }      static public int lastIndexOf(String toSearch, String toFind)   {     if(toSearch == null || toFind == null)       throw new NullPointerException();     //the dirty way:     String toSearchReversed = (new StringBuffer(toSearch)).reverse().toString();     String toFindReversed = (new StringBuffer(toFind)).reverse().toString();     return toSearch.length() - (toSearchReversed.indexOf(toFindReversed) + toFind.length() - 1) - 1;       }      static public String replace(String toSearch, String toFind, String replaceWith) throws IllegalArgumentException   {     toSearch = new String(toSearch); //make copy     if(toSearch != null && toFind != null && replaceWith != null)     {       int idx = toSearch.indexOf(toFind);       while(idx > -1)       {         String rest = right(toSearch, toSearch.length() - (idx + toFind.length()));         toSearch = left(toSearch, idx) + replaceWith + rest;          int idxInRest = rest.indexOf(toFind);         idx = ((idxInRest > -1) ? (idxInRest + idx + replaceWith.length()) : -1);       }     }       return toSearch;   }      static public String replaceWithEscape(String toSearch, char toFind, String replaceWith, char escape) throws IllegalArgumentException   {     toSearch = new String(toSearch); //make copy     if(toSearch != null)     {       int idx = toSearch.indexOf(toFind);       while(idx > -1)       {         String rest = right(toSearch, toSearch.length() - (idx + 1));         int shift = 0;         if(idx > 0 && toSearch.charAt(idx - 1) == escape)           toSearch = left(toSearch, idx - 1) + toFind + rest; //escape: "!$" = "$"         else         {           toSearch = left(toSearch, idx) + replaceWith + rest;           shift = replaceWith.length();         }         int idxInRest = rest.indexOf(toFind);         idx = ((idxInRest > -1) ? (idxInRest + idx + shift) : -1);       }     }       return toSearch;   }      static public String replaceWithEscape(String toSearch, char toFind, String[] replaceWith, char escape) throws IllegalArgumentException   {     toSearch = new String(toSearch); //make copy     if(toSearch != null && replaceWith != null)     {       int idx = toSearch.indexOf(toFind);       int r = 0;       while(idx > -1 && replaceWith.length > r && replaceWith[r] != null)       {         String rest = right(toSearch, toSearch.length() - (idx + 1));         int shift = 0;         if(idx > 0 && toSearch.charAt(idx - 1) == escape)           toSearch = left(toSearch, idx - 1) + toFind + rest; //escape: "!$" = "$"         else         {           toSearch = left(toSearch, idx) + replaceWith[r] + rest;           shift = replaceWith[r].length();           r++;         }         int idxInRest = rest.indexOf(toFind);                 idx = ((idxInRest > -1) ? (idxInRest + idx + shift) : -1);       }     }       return toSearch;   }      static public String replace(String toSearch, char toFind, String replaceWith)   {     return replace(toSearch, new String(new char[] { toFind }), replaceWith);   }      static public String replace(String toSearch, String toFind, char replaceWith)   {     return replace(toSearch, toFind, new String(new char[] { replaceWith }));   }      static public String left(String string, int substringLength)   {     if(substringLength < 0)       throw new IllegalArgumentException("Substring length cannot be negative!");     return string.substring(0, substringLength);       }      static public String right(String string, int substringLength)   {     if(substringLength < 0)       throw new IllegalArgumentException("Substring length cannot be negative!");     return string.substring(string.length() - substringLength, string.length());         }      static public String padWithLeadingZeros(String string, int desiredLength)   {     StringBuffer bff = new StringBuffer(string);     while(bff.length() < desiredLength)             bff.insert(0, '0');     return bff.toString();   }      static public String cutOrExtendAtTail(String string, int desiredLength, char filler)   {     if(string.length() > desiredLength)       return left(string, desiredLength);     else if(string.length() < desiredLength)     {       StringBuffer bff = new StringBuffer(string);       for(int i = 0; i < desiredLength - string.length(); i++)         bff.append(filler);       return bff.toString();       }     else       return string;   }      static public String removeWhiteSpace(String string)   {     string = replace(string, '\n', "");     string = replace(string, '\r', "");     string = replace(string, '\t', "");     string = replace(string, ' ', "");     return string;   }      static public String contractToCamelCase(String string)   {     StringBuffer bff = new StringBuffer(string.length());     boolean previousWasSpace = false;     for(int i = 0; i < string.length(); i++)     {       char currentChar = string.charAt(i);        if(currentChar == ' ')       {         previousWasSpace = true;       }       else       {         if(previousWasSpace)           bff.append(Character.toUpperCase(currentChar));         else           bff.append(currentChar);                 previousWasSpace = false;       }     }     return bff.toString();   }      static public String removeWhiteSpaceAndContractToCamelCase(String string)   {     string = replace(string, '\n', "");     string = replace(string, '\r', "");     string = replace(string, '\t', "");     return contractToCamelCase(string);   }      public static String[] split(String string, char separatorChar)   {     return split(string, new char[] { separatorChar });   }      public static String[] split(String string, char[] separatorChars)   {     if (string == null || string.equals(""))       return new String[] { string };     int len = string.length();     Vector separators = new Vector(separatorChars.length);     for(int s = 0; s < separatorChars.length; s++)       separators.addElement(new Character(separatorChars[s]));     Vector list = new Vector();     int i = 0;     int start = 0;     boolean match = false;     while (i < len)     {       if (separators.contains(new Character(string.charAt(i))))       {         if (match)         {           list.addElement(string.substring(start, i));           match = false;         }         start = ++i;         continue;       }       match = true;       i++;     }     if (match)     {       list.addElement(string.substring(start, i));     }     String[] arr = new String[list.size()];     list.copyInto(arr);     return arr;   }      /**    * Converts a long timestamp to a string in the following format:</br>    *  YYYY[dateSeparator]MM[dateSeparator]DD[dateTimeSeparator]hh[timeSeparator]mm[timeSeparator]ss    *    * @param timeStamp    * @param dateSeparator    * @param timeSeparator    * @param dateTimeSeparator    * @return A String containing the formatted timestamp    */   static public String formatDateTime(long timeStamp, String dateSeparator, String timeSeparator, String dateTimeSeparator)   {       if(dateSeparator == null)       dateSeparator = "";     if(dateTimeSeparator == null)       dateTimeSeparator = "";     Calendar cal = Calendar.getInstance();     cal.setTimeZone(TimeZone.getDefault()); //use system time zone     cal.setTime(new Date(timeStamp)); //set the time         //Format the string:     StringBuffer bff = new StringBuffer();     //  Date (YYYY[dateSeparator]MM[dateSeparator]DD)     bff.append(StringUtils.padWithLeadingZeros(String.valueOf(cal.get(Calendar.YEAR)), 4) + dateSeparator);     bff.append(StringUtils.padWithLeadingZeros(String.valueOf(cal.get(Calendar.MONTH) + 1), 2) + dateSeparator);     bff.append(StringUtils.padWithLeadingZeros(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)), 2));     //  [dateTimeSeparator]     bff.append(dateTimeSeparator);     //  Time (hh[timeSeparator]mm[timeSeparator]ss)     bff.append(formatTime(timeStamp, timeSeparator));     //return the result     return bff.toString();       }      /**    * Converts a long timestamp to a string in the following format:</br>    *  hh[timeSeparator]mm[timeSeparator]ss    *    * @param timeStamp    * @param timeSeparator    * @return A String containing the formatted timestamp    */   static public String formatTime(long timeStamp, String timeSeparator)   {       if(timeSeparator == null)       timeSeparator = "";     Calendar cal = Calendar.getInstance();     cal.setTimeZone(TimeZone.getDefault()); //use system time zone     cal.setTime(new Date(timeStamp)); //set the time         //Format the string:     StringBuffer bff = new StringBuffer();     //  Time (hh[timeSeparator]mm[timeSeparator]ss)     bff.append(StringUtils.padWithLeadingZeros(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)), 2) + timeSeparator);     bff.append(StringUtils.padWithLeadingZeros(String.valueOf(cal.get(Calendar.MINUTE)), 2) + timeSeparator);     bff.append(StringUtils.padWithLeadingZeros(String.valueOf(cal.get(Calendar.SECOND)), 2));     //return the result     return bff.toString();       }      public static String formatTimeSpan(long milliseconds)   {       //Days     long days = milliseconds / 86400000;     //Hours     long hours = (milliseconds % 86400000) / 3600000;     //Minutes     long minutes = ((milliseconds % 86400000) % 3600000) / 60000;         //Seconds.millis     float seconds = (((milliseconds % 86400000) % 3600000) % 60000) / 1000;     return       "" +       ((days > 0) ? (days + "d ") : "") +       ((hours > 0) ? (hours + "h ") : "") +       ((minutes > 0) ? (minutes + "m ") : "")       + seconds + "s";   }      public static String StringArrayToString(String[] array, String separator)   {     if(array != null && array.length > 0)     {       StringBuffer bff = new StringBuffer(array[0]);       for(int i = 1; i < array.length; i++)         bff.append(separator + array[i]);       return bff.toString();     }     else       return "";   }    }