Replace String With Escape : String Escape « Data Type « Java






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 "";
  }
  
}

   
    
    
    
    
  








Related examples in the same category

1.Ends With Ignore Case
2.Escape commas in the string using the default escape char
3.Escapes characters that have special meaning to regular expressions
4.unEscape String
5.Quote string
6.Unquote string
7.Removes the double quote from the start and end of the supplied string if it starts and ends with this character
8.Escape string
9.Unescape any C escape sequences (\n, \r, \\, \ooo, etc) and return the resulting string.
10.Unescape any MySQL escape sequences.
11.Escape a string for use inside as XML element content. This escapes less-than and ampersand, only.
12.Escape a string for use inside as XML single-quoted attributes.