Java字符串的处理常用方法

import  Java.util.ArrayList;
import  java.util.StringTokenizer;
/**
* 字符串的处理
*/
public  class  HString
{
  private  String strin= null ;
    
  public  HString(String strin)
  {
   this .strin=strin;
  }
  /**
  * 全部替换字符串里符合指定内容的为其它内容,与String类中不同,它使用的不是正则表达式的。
  * @param String regex, 需要替换的内容
  * @param String replacement, 用来替换的内容
  * @return String, 字符串替换后的内容
  */
  public  String replaceAll(String regex,String replacement)
  {
   StringBuffer sb= new  StringBuffer();
   int  rbegin= 0 ;
   int  rend=strin.indexOf(regex);
   int  rlen=regex.length();
   while (rend>= 0 )
   {
    sb.append(strin.substring(rbegin,rend));
    sb.append(replacement);
    rbegin=rend+rlen;
    rend=strin.indexOf(regex,rbegin);
   }
   sb.append(strin.substring(rbegin));
   strin=sb.toString();
   return  strin;
  }
  /**
  * 切割字符串,用字符切割,并从指定位置开始
  * @param char c, 用来切割的字符
  * @param int it, 起始切割位置
  * @return String[],切割后的字符串数组
  */
  public  String[] split( char  c,  int  it)
     {
         ArrayList arraylist =  new  ArrayList();
   char [] chark=strin.toCharArray();
   StringBuffer sb= new  StringBuffer();
   for ( int  i=it;i<chark.length;i++)
   {
    if (chark[i]==c)
    {
     arraylist.add(sb.toString());
     sb= new  StringBuffer();
    } else {
     sb.append(chark[i]);
     if (i==chark.length- 1 )
     {
      arraylist.add(sb.toString());
     }
    }
   }
     
   int  k=arraylist.size();
   String as[]= new  String[k];
         return  (String[])arraylist.subList( 0 ,k).toArray(as);
     }
    
  /**
  * 用指定字符切割字符串
  * @param char c, 切割用的字符
  * @return String[], 切割成的字符串数组
  */
     public  String[] split( char  c)
     {
         return  split(c,  0 );
     }
  /**
  * 用字符串切割字符串
  * @param String c, 用来切割的字符串
  * @param String[], 切割成的字符串
  */
  public  String[] split(String c)
  {
   System.out.println(  "分隔符: "  + c );
   if  (strin ==  null )
   {
    return  null ;
   }
   ArrayList arraylist =  new  ArrayList();
   int  begin =  0 ;
   int  end =  0 ;
   while  ((begin = strin.indexOf(c, end)) != - 1 )
   {
    String s2 = strin.substring(end, begin);
    if  ( s2.trim().length() >  0  ) {  // 过滤掉空格的
     arraylist.add(strin.substring(end, begin));
    }
    end = begin + c.length();
   }
   if  (end != strin.length())
   {
    arraylist.add(strin.substring(end));
   }
     
   int  k=arraylist.size();
   String as[]= new  String[k];
   System.out.println(  "分隔数量 : "  + as.length );
         return  (String[])arraylist.subList( 0 ,k).toArray(as);
  }
  /**
  * 把一个字符转化成二进制的
  * @param char c, 原字符
  * @param String, 二进制字符串
  */
  public  static  String toBin( char  c) {
   int  k =  0x8000 ;
   StringBuffer sb =  new  StringBuffer( 16 );
   for  ( int  i =  0 ; i <  16 ; k>>>= 1 ,i++)
   {
    sb.append(((c&k) !=  0 )? 1 : 0 );
   }
   return  sb.toString();
  }
  /**
  * 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
  * @param char c, 需要判断的字符
  * @return boolean, 返回true,Ascill字符
  */
  public  static  boolean  isLetter( char  c) {
   int  k =  0x80 ;
   return  c/k ==  0 ? true : false ;
  }
  /**
  * 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1
  * @param String s ,需要得到长度的字符串
  * @return int, 得到的字符串长度
  */
  public  static  int  length(String s) {
   char [] c = s.toCharArray();
   int  len =  0 ;
   for  ( int  i =  0 ; i < c.length; i++)
   {
    len++;
    if  (!isLetter(c[i]))
    {
     len++;
    }
   }
   return  len;
  }
  /**
  * 从开始位置获取len个字符位的字符串,不区分中英文
  * @param String origin, 原始字符串
  * @param int len, 切割的长度(一个汉字长度按2算的)
  * @return String, 切割后的字符串
  */
  public  static  String substring(String origin,  int  len) {
   return  substring(origin,  0 , len);
  }
  /**
  * 截取一段字符的长度,不区分中英文,如果数字不正好,则多取一个字符位
  * @param  String origin, 原始字符串
  * @param  int begin, 开始位置
  * @param  int len, 截取长度(一个汉字长度按2算的)
  * @return String, 返回的字符串
  */
  public  static  String substring(String origin,  int  begin,  int  len) {
   if  (origin ==  null )
   {
    return  origin;
   }
   int  sBegin = (begin <  0 )? 0 :begin;
   // 越出范围处理
   if  (len <  1  || sBegin > origin.length())
   {
    return  "" ;
   }
   if  (len + sBegin > origin.length())
   {
    return  origin.substring(sBegin);
   }
   char [] c = origin.toCharArray();
   StringBuffer sb =  new  StringBuffer();
   for  ( int  i = sBegin,j = sBegin; i < (sBegin +  2 *len); i++,j++)
   {
    if  (j >= c.length)  break ;
    sb.append(c[j]);
    if  (!isLetter(c[j]))
    {
     i++;
    }
   }
   return  sb.toString();
  }
  public  String toString() {
   return  strin;
  }
  /**
  * 把一个html的字符串转换成网页上显示的字符串
  * @param String html, 原html格式的字符串
  * @return String, 转换后网页显示格式的字符串
  */
  public  static  String htmlToWeb( String html ) {
   if  (html ==  null  || html.length() ==  0 )
   {
    return  "" ;
   }
   char [] c = html.toCharArray();
   StringBuffer sb =  new  StringBuffer();
   for  ( int  i =  0 ; i < c.length; i++)
   {
    switch  (c[i])
    {
    case  '>' :
     sb.append( "&gt;" );
     break ;
    case  '<' :
     sb.append( "&lt;" );
     break ;
    case  ' ' :
     sb.append( "&nbsp;" );
     break ;
    case  '"' :
     sb.append( "&quot;" );
     break ;
    case  '&' :
     sb.append( "&amp;" );
     break ;
    case  '\n' :
     sb.append( "<br>" );
     break ;
    default :
     sb.append(c[i]);
    }
   }
   return  sb.toString();
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值