字符串处理类。


import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import org.apache.commons.validator.GenericValidator;


import sun.io.ByteToCharConverter;
import sun.io.MalformedInputException;
public class StringUtil{

  public StringUtil(){
  }
  /**
   *
   * @param s String
   * @return String
   */
  public static String urlDecode(String s){
    String result = null;
    if(s != null)
      result = URLDecoder.decode(s);
    return result;
  }
  /**
   *
   * @param param String
   * @return String
   */
  public static String processParameter(String param){
    if(param == null)
        return null;
    String result = null;
    try{
        result = new String(param.getBytes("ISO-8859-1"), "UTF-8");
        return result;
    }catch(UnsupportedEncodingException e){
        return param;
    }
  }
  /**
   *
   * @param s String
   * @param oldChar char
   * @return String
   */
  public static String deleteAll(String s, char oldChar){
    if(s == null)
      return null;
    String result = null;
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < s.length(); i++){
      char c = s.charAt(i);
      if(c != oldChar)
        sb.append(c);
    }
    result = sb.toString();
    return result;
  }
  /**
   * compare string
   * @param a String
   * @param b String
   * @return boolean
   */
  public static boolean compare(String a, String b){
    if(a == null)
      a = "";
    if(b == null)
      b = "";
    a = a.trim();
    b = b.trim();
    return a.equals(b);
  }
  /**
   *
   * @param email String
   * @return int
   */
  public static int validateEmail(String email){
      if(email != null)
          email = email.trim();
      if(GenericValidator.isBlankOrNull(email))
          return 0;
      return !GenericValidator.isEmail(email) ? -1 : 1;
  }
  /**
   *
   * @param string String
   * @return String
   */
  public static String convertFromISO(String string){
    if(string == null)
      return string;
    try{
      String temp_p = string;
      byte temp_b[] = temp_p.getBytes("ISO8859-1");
      String temp = new String(temp_b, "UTF-8");
      return temp;
    }catch(UnsupportedEncodingException e){
      System.err.println(e);
    }
    return string;
  }
  /**
   *
   * @param string String
   * @return String
   */
  public static String convertToISO(String string){
    if(string == null)
      return string;
    try{
      String temp_p = string;
      byte temp_b[] = temp_p.getBytes("UTF-8");
      String temp = new String(temp_b, "ISO8859-1");
      return temp;
    }catch(UnsupportedEncodingException e){
      System.err.println(e);
    }
    return string;
  }
  /**
   *
   * @param s String
   * @return String
   */
  public static String convertToUTF8(String s){
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < s.length(); i++){
      char c = s.charAt(i);
      if(c >= 0 && c <= '\377'){
        sb.append(c);
      } else{
        byte b[];
        try{
          b = Character.toString(c).getBytes("utf-8");
        }catch(Exception ex){
          System.out.println(ex);
          b = new byte[0];
        }
        for(int j = 0; j < b.length; j++){
          int k = b[j];
          if(k < 0)
            k += 256;
          sb.append("%" + Integer.toHexString(k).toUpperCase());
        }

      }
    }

    return sb.toString();
  }

  /**
   *
   * @param str String
   * @return String
   */

  public static String getEncodedFileName(String str){
    if(str == null || str.length() <= 0)
      return null;
    int dot = str.lastIndexOf(46);
    String s1;
    String s2;
    if(dot >= 0){
      s1 = str.substring(0, dot);
      s2 = str.substring(dot);
    } else{
      s1 = str;
      s2 = "";
    }
    return toUnicodeString(s1) + s2;
  }
  /**
   *
   * @param pStr String
   * @return String
   */
  public static String toUnicodeString(String pStr){
    String encodedName = "";
    try{
      byte namebytes[] = pStr.getBytes("UTF-8");
      ByteToCharConverter converter = ByteToCharConverter.getConverter("UTF-8");
      char cArray[] = converter.convertAll(namebytes);
      for(int i = 0; i < cArray.length; i++){
        String tmpStr = Integer.toHexString(cArray);
        if(tmpStr.length() < 4)
          if(tmpStr.length() == 3)
            tmpStr = "0" + tmpStr;
          else
          if(tmpStr.length() == 2)
            tmpStr = "00" + tmpStr;
          else
          if(tmpStr.length() == 1)
            tmpStr = "000" + tmpStr;
          else
            tmpStr = "0000";
        encodedName = encodedName + tmpStr;
      }

    }catch(MalformedInputException e){
      encodedName = pStr;
    }catch(UnsupportedEncodingException e){
      encodedName = pStr;
    }
    return encodedName;
  }
  /**
   *
   * @param str String
   * @return String
   */
  public static String getDecodedFileName(String str){
    if(str == null || str.length() <= 0)
      return null;
    int dot = str.lastIndexOf(46);
    String s1;
    String s2;
    if(dot >= 0){
      s1 = str.substring(0, dot);
      s2 = str.substring(dot);
    } else{
      s1 = str;
      s2 = "";
    }
    return fromUnicodeString(s1) + s2;
  }
  /**
   *
   * @param orgStr String
   * @return String
   */
  public static String fromUnicodeString(String orgStr){
    String result = "";
    if(orgStr != null && orgStr.length() > 0){
      int len = orgStr.length();
      if(len % 4 != 0){
        System.out.println("Invalid String, the length should be multiple of 4");
        return result;
      }
      for(int i = 0; i < orgStr.length() / 4; i++){
        String substr = orgStr.substring(i * 4, (i + 1) * 4);
        String tmpresult = getDecodedChar(substr);
        result = result + tmpresult;
      }

    }
    return result;
  }
  /**
   *
   * @param pStr String
   * @return String
   */
  private static String getDecodedChar(String pStr){
    int i = Integer.valueOf(pStr, 16).intValue();
    char cc = (char)i;
    String ss = String.valueOf(cc);
    return ss;
  }

  public static String toString(String s){
    if(s == null)
      return "";
    else
      return s;
  }

  public static boolean isEmpty(String string){
    return string == null || string.trim().length() == 0;
  }

  /**
   * split("separator",'a') returns {"sep","r","tor"}
   * @param src
   * @param char
   * @return        <br>
   */
  public static String[] split(String src, char separator){

    if (null != src || "".equals(src))
    {
            return src.split("separator");
    }
      return null;
  }

  public static int count(String ptr, char c){
    int coun=0, pos=0;
    while ((pos=ptr.indexOf(c,pos))!=-1){
      coun++;
      pos++;
    }
    return coun;
  }


  public static int count(String ptr, String c){
    int coun=0, pos=0;
    while ((pos=ptr.indexOf(c,pos))!=-1){
      coun++;
      pos+=c.length();
    }
    return coun;
  }

  /**
   *replace string<p>
   *exp:<br>
   *String buf = "this is an test";   <br>
   *String oldstr = "an";  <br>
   *String newstr = "a";  <br>
   *StringUtil.replace(buf,oldstr,newstr)  returns "this is a test" ;  <br>
   *public String replace(char oldChar,char newChar)  <br>
   *"mesquite in your cellar".replace('e', 'o')     returns "mosquito in your collar"  <br>
   *@param   buf     originally
   *@param   oldstr  old sub string
   *@param   newstr  new sub string
   *@return  new string   <br>
   */
   public static String replace(String buf, String oldstr, String newstr)
   {
     if(null != buf || "".equals(buf))
     {
             return buf.replaceAll(oldstr, newstr);
     }
     return null;
   }
   public static void main(String args[])
   {
           System.out.println(StringUtil.getEncodedFileName("fasdfasdfhfaklhs123123.fas"));
   }

   /**
    * 对字符串中的特殊字符"\n"加转义符"\\n"。
    *
    * @param   change[]    需转换的字符串数组
    * @return              转换后的字符串数组
    */


   public static String[]  changeNewLine(String[] change) {
       if(change != null) {
           int i = 0;
           int width = change.length;
           int index = -1;
           for (i = 0; i < width; i++) {
               index = change.indexOf("\n");
               while(index != -1) {
                   change = change.substring(0,index) + "\\n"
                               + change.substring(index + 1);
                   index = change.indexOf("\n");
               }
           }
           return change;
       }
       return change;
   }

   /**
    * 对字符串中的特殊字符"\n"加转义符"\\n"。
    *
    * @param   change[]    需转换的字符串数组
    * @return              转换后的字符串数组
    */


   public static String changeNewLine(String change) {
       if(change != null) {
           int i = 0;
           int index = -1;
               index = change.indexOf("\n");
               while(index != -1) {
                   change = change.substring(0,index) + "\\n"
                               + change.substring(index + 1);
                   index = change.indexOf("\n");
               }
           return change;
       }
       return change;
   }


}

你可能感兴趣的:(C++,c,C#,J#,sun)