一些String方法

 

import java.util.ArrayList;

/**
 * 字符串的处理
 
*/

public class StringMethods {
    
private String strin = null;

    
public StringMethods(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();
    }

}

posted on 2007-07-21 22:14 hugh 阅读(1181) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

公告

小弟打算把硬盘里的所有资料整理到博客里,但是其中收藏了不少网上的文章(个人也记不住作者),请作者见谅!请知道作者的朋友(或作者本人)看到了请告诉小弟,小弟好把作者加上!

常用链接

留言簿(2)

随笔分类

随笔档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜