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


    在网上以前流传的代码是这样的:

    class SplitString {    

    String SplitStr;

        int SplitByte;

        
    public SplitString(String str, int bytes) {
            SplitStr 
    = str;
            SplitByte 
    = bytes;
            System.out.println(
    "The String is:′" + SplitStr + "′;SplitBytes="
                    
    + SplitByte);
        }

        
    public void SplitIt() {
            
    int loopCount;
            loopCount 
    = (SplitStr.length() % SplitByte == 0? (SplitStr.length() / SplitByte)
                    : (SplitStr.length() 
    / SplitByte + 1);
            System.out.println(
    "Will Split into " + loopCount);
            
    for (int i = 1; i <= loopCount; i++) {
                
    if (i == loopCount) {
                    System.out.println(SplitStr.substring((i 
    - 1* SplitByte,
                            SplitStr.length()));
                } 
    else {
                    System.out.println(SplitStr.substring((i 
    - 1* SplitByte,
                            (i 
    * SplitByte)));
                }
            }
        }
        
    public static void main(String[] args) {
            SplitString ss 
    = new SplitString(
                    
    "test中dd文dsdg老师的看见发lkjd"5);
            ss.SplitIt();
        }

    }

    我改进后的代码:

     

    class SplitString {    

        String SplitStr;

        int SplitByte;

        
    public SplitString(String str, int bytes) {
            SplitStr 
    = str;
            SplitByte 
    = bytes;
            System.out.println(
    "The String is:′" + SplitStr + "′;SplitBytes="
            
    + SplitByte);
        }

        
    public static void main(String[] args) {
            SplitString ss 
    = new SplitString(
                    
    "test中dd文fasjaslkjdfalsjf师的看见发lkjd",4);
            ss.split();
        }

        
    public void split() {
            
    for (int i = 0, len = SplitStr.length(); i < len; i = i + SplitByte) {
                
    if (i + SplitByte < len) {
                    System.out.println(SplitStr.substring(i, i 
    + SplitByte));
                }
                
    else {

                    System.out.println(SplitStr.substring(i, len));
                }
            }
        }
    }
  • 相关阅读:
    云图小助理
    ping包的checksum校验和
    ftp相关
    初始化字符串
    安全的域名解析
    10进制转62进制
    centos6一键安装WordPress
    CEF3编译
    一次性生产KEY
    linux系统问题排查
  • 原文地址:https://www.cnblogs.com/zhonghan/p/1442241.html
Copyright © 2020-2023  润新知