字符串应用

通过对String类和StringBuffer类的学习和理解,来进行字符串应用的简单实现,因为我是初学者所以我的学习就是简单的实现。

1.截取字符串

输入为一个字符串和字节数,输出为按照字节数截取的字符串,要保证汉字不会被截半个。例如“我ABC们DEF,6”,要输出“我ABC”,而不会出现汉字截取错误。

其实这个题是我看到网上做的,而且我也觉得他的方法很好,所以拿出来和大家共同分享

public class copyFor {
    public static void main(String[] args) throws UnsupportedEncodingException{
        String s="我们DEF";
        int n=4;
        String str=cutString(s,n);
        System.out.println(str);
    }

    private static String cutString(String s, int n) throws UnsupportedEncodingException {
        // TODO Auto-generated method stub
        if(s!=null&&"".equals(s)){
            s=new String(s.getBytes(),"GBK");
            
        }
        StringBuffer buffer=new StringBuffer();
        if(n!=0&&n<s.getBytes("GBK").length){
            
            for(int i=0;i<n;i++){
                char c=s.charAt(i);
                buffer.append(c);
                System.out.println("buffer="+buffer.toString());
                if(copyFor.isChinens(c)){
                    --n;
                }
                        
            }
            
        }
        
        return buffer.toString();
    }

    private static boolean isChinens(char c) throws UnsupportedEncodingException {
        // TODO Auto-generated method stub
        if(String.valueOf(c).getBytes("GBK").length>1){
            return true;
        }else{
        return false;}
    }

}

2.拆分字符串

现有一个字符串(123,45,678),由数字和逗号组成,编写一段程序将字符串中的数字提取出来,分别按照升序和降序排列打印出来

这个题我自己做了一个方法,书上提供了StringTokenizer来处理

public class six {
    public static void main(String[] args){
        String s="123,45,25,85";
        String[] str=s.split(",");
        for(int i=0;i<str.length;i++){
            System.out.println(str[i]);
        }
        
    int[] num=new int[str.length];
        for(int i=0;i<num.length;i++){
            num[i]=Integer.parseInt(str[i]);
            System.out.println("list-------->"+num[i]);
        }
        Arrays.sort(num);
        
        for(int j=0;j<num.length;j++){
            System.out.println(num[j]);
            System.out.println("de"+num[num.length-1-j]);
        }
        
        
        
    }

}

这个是我写的,因为题目明确给出了有逗号,所以我用了String的split方法。

下面给出书上的代码,其实是这个更具有代表性

public class Test {
    public static void main(String[] args){
    String[] s=sps("123,45,678");
    int[] num=new int[s.length];
    for(int i=0;i<s.length;i++){
        num[i]=Integer.parseInt(s[i]);
    }
    Arrays.sort(num);
    for(int i=0;i<num.length;i++){
        System.out.println(num[i]+","+num[num.length-1-i]);
    }
    }

    private static String[] sps(String string) {
        // TODO Auto-generated method stub
        if(string==null&&"".equals(string))
        {
            System.out.println("wrong");
        }
        
            StringTokenizer st=new StringTokenizer(string,",");
            String[] str=new String[st.countTokens()];
            int i=0;
            while(st.hasMoreTokens()){
                str[i]=st.nextToken();
                i++;
                
            }
            
        
        return str;
    }

}

感慨下:看着别人写的代码就觉得自己写的太差了,哎或许这就是实力的差距吧,今天到这了吧。

 

posted @ 2012-09-14 21:07  qqhegg  阅读(377)  评论(2编辑  收藏  举报