java截取包含汉字字符串

/*编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
输出为按字节截取的字符串。 但是要保证汉字不被截半个,
如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
*/


class SplitString {
    private String str;

    private int byteNum;

    public SplitString() {
    }

    public SplitString(String str, int byteNum) {
        this.str = str;
        this.byteNum = byteNum;
    }

    public void splitIt() {

        byte bt[] = str.getBytes();
        System.out.println("Length of this String ===>" + bt.length);
        if (byteNum > 1) {
            if (bt[byteNum] < 0) {
                pBinInt("bt[byteNum]", bt[byteNum]);
                System.out.println("bt[" + byteNum + "] = " + bt[byteNum]);// 1
                System.out
                        .println("bt[" + byteNum + "] = " + (int) bt[byteNum]);// 2
                System.out.println("bt[" + byteNum + "] = "
                        + (bt[byteNum] & 0x000000FF));// 3
                System.out.println("bt[" + byteNum + "] = "
                        + (bt[byteNum + 1] & 0XFF));// 4
                String substrx = new String(bt, 0, --byteNum);
                System.out.println(substrx);
            } else {
                String substrex = new String(bt, 0, byteNum);
                System.out.println(substrex);
            }

        } else {
            if (byteNum == 1) {
                if (bt[byteNum] < 0) {
                    String substr1 = new String(bt, 0, --byteNum);
                    System.out.println(substr1);
                } else {
                    String subStr2 = new String(bt, 0, byteNum);
                    System.out.println(subStr2);
                }
            } else {
                System.out.println("输入错误!!!请输入大于零的整数:");
            }
        }
    }

    static void pBinInt(String s, int i) {
        System.out.println(s + ", int: " + i + ", binary: ");
        System.out.print("   ");
        for (int j = 31; j >= 0; j--)
            if (((1 << j) & i) != 0)
                System.out.print("1");
            else
                System.out.print("0");
        System.out.println();
    }
}

class TestSplitString {
    public static void main(String args[]) {
        String str = "我abc的DEFe";
        int num = 6;
        SplitString sptstr = new SplitString(str, num);
        sptstr.splitIt();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值