新人练习之只使用String.length和String.CharAt();来完成常用StringAPI的编写

来源:互联网 发布:湖南网络工程学院宿舍 编辑:程序博客网 时间:2024/06/05 15:05
// boolean equals(Object obj):比较字符串的内容是否相同 判断账号和密码
    public static boolean eqals(String str1, String str2) {

        boolean flag = true;
        // 遍历两个字符串,比较长度以及比较内容
        if (str1.length() != str2.length()) {
            flag = false;
        } else {
            for (int i = 0; i < str1.length(); i++) {
                if (str1.charAt(i) != str2.charAt(i)) {
                    flag = false;
                    break;
                }
            }
        }

        // 返回值
        return flag;
    }

    // boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写 判断验证码
    public static boolean equalsIgnoreCase(String str1, String str2) {
        // 忽略大小写,大写-32即是小写,需要提取字符串中的英文字母
        boolean flag = true;
        if (str1.length() != str2.length()) {
            flag = false;
        } else {
            for (int i = 0; i < str1.length(); i++) {
                if (str1.charAt(i) >= 'A' && str1.charAt(i) <= 'Z') {
                    if (str1.charAt(i) != str2.charAt(i) && str1.charAt(i) + 32 != str2.charAt(i)) {
                        flag = false;
                        break;
                    }
                } else if (str1.charAt(i) >= 'a' && str1.charAt(i) <= 'z') {
                    if (str1.charAt(i) != str2.charAt(i) && str1.charAt(i) - 32 != str2.charAt(i)) {
                        flag = false;
                        break;
                    }
                } else {
                    if (str1.charAt(i) != str2.charAt(i)) {
                        flag = false;
                        break;
                    }
                }
            }
        }
        return flag;
    }

    // boolean startsWith(String str):判断字符串对象是否以指定的str开头 判断姓名的姓氏
    public static boolean startsWith(String str1, String str2) {
        // 就是判断str1的开头是否是str2,遍历字符串,查看在str2的长度中是否是相等的
        boolean flag = true;
        if (str1.length() < str2.length()) {
            flag = false;
        } else {
            for (int i = 0; i < str2.length(); i++) {
                if (str1.charAt(i) != str2.charAt(i)) {
                    flag = false;
                    break;
                }
            }
        }
        return flag;
    }

    // boolean endsWith(String str):判断字符串对象是否以指定的str结尾 判断后缀
    public static boolean endsWith(String str1, String str2) {
        // 将str2遍历与str1.length()-1-str2.length比较
        boolean flag = true;
        if (str1.length() < str2.length()) {
            flag = false;
        } else {
            for (int i = 0; i < str2.length(); i++) {
                if (str1.charAt(str1.length() - str2.length() + i) != str2.charAt(i)) {
                    flag = false;
                    break;
                }
            }
        }
        return flag;
    }

    // int indexOf(String str):获取str在字符串对象中第一次出现的索引
    // 首先判断是否有相同的,如果有则将当时的x-str2的长度
    public static int indexOf(String str1, String str2) {

        int index = -1;
        if (str1.length() < str2.length()) {
            return index;
        } else {
            for (int x = 0; x < str1.length() - str2.length(); x++) {
                boolean flag = true;
                for (int i = 0; i < str2.length(); i++) {
                    if (str1.charAt(x + i) != str2.charAt(i)) {
                        flag = false;
                    }
                }
                if (flag == true) {
                    index = x;
                }
            }
        }
        return index;
    }

    // String substring(int start):从start开始截取字符串
    public static String substring(String str1, int start) {
        // 创建一个字符串类型,内容为空
        String str2 = "";
        for (int i = 0; i < str1.length(); i++) {
            if (i >= start) {
                str2 += str1.charAt(i);
            }
        }
        return str2;
    }

    // String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
    public static String substring(String str1, int start, int end) {
        String str2 = "";
        for (int i = 0; i < str1.length(); i++) {
            if (i >= start && i < end) {
                str2 += str1.charAt(i);
            }
        }
        return str2;
    }

    // char[] toCharArray():把字符串转换为字符数组
    public static char[] toCharArray(String str1) {
        char[] chs = new char[str1.length()];
        for (int i = 0; i < str1.length(); i++) {
            chs[i] = str1.charAt(i);
        }
        return chs;
    }

    // String toUpperCase():把字符串转换为大写字符串
    public static String toUpperCase(String str1) {
        String str = "";
        char[] ch = new char[str1.length()];
        for (int i = 0; i < str1.length(); i++) {
            ch[i] = str1.charAt(i);
            if (str1.charAt(i) <= 'z' && str1.charAt(i) >= 'a') {
                ch[i] -= 32;
            }
            str += ch[i];
        }
        return str;
    }

    // String toLowerCase():把字符串转换为小写字符串
    public static String toLowerCase(String str1) {
        String str = "";
        char[] ch = new char[str1.length()];
        for (int i = 0; i < str1.length(); i++) {
            ch[i] = str1.charAt(i);
            if (str1.charAt(i) <= 'Z' && str1.charAt(i) >= 'A') {
                ch[i] += 32;
            }
            str += ch[i];
        }
        return str;
    }

    // String trim(): 去除字符串两端空格
    public static String trim(String str1) {
        // 分析:每次判断索引0以及索引str1.length-1的值是否为空格,是的话就删除,生成新的字符串继续
        while (true) {
            char[] chs = new char[str1.length()];
            for (int x = 0; x < str1.length(); x++) {
                chs[x] = str1.charAt(x);
            }
            String str2 = "";
            if (chs[0] == ' ') {
                for (int x = 0; x < chs.length; x++) {
                    if (x > 0 && x < chs.length - 1) {
                        str2 += chs[x];
                    } else if (chs[chs.length - 1] != ' ') {
                        str2 += chs[chs.length - 1];
                    }
                }
                str1 = str2;
            } else {
                if (chs[chs.length - 1] != ' ') {
                    break;
                } else {
                    for (int x = 0; x < chs.length; x++) {
                        if (x < chs.length - 1) {
                            str1 += chs[x];
                        }
                    }
                    str1 = str2;
                }
            }

        }
        return str1;
    }

    // String[] split(String str): 按照指定符号分割字符串,no
    public static String[] split(String str1, char chs) {
        // 首先遍历字符串,找出分隔符的个数,数组长度为分隔符+1
        int count = 0;
        for (int i = 0; i < str1.length(); i++) {
            if (chs == str1.charAt(i)) {
                count++;
            }
        }
        String[] strArray = new String[count + 1];
        count = 0;
        // 创建一个字符串数组
        while (true) {
            // 创建一个stringBuild
            StringBuilder sb = new StringBuilder();
            int index = -1;
            for (int j = 0; j < str1.length(); j++) {
                if (str1.charAt(j) == chs) {
                    index = j;
                    break;
                }
            }
            if (index == -1) {
                strArray[count] = str1;
                break;
            } else {
                String str2 = "";
                for (int i = 0; i < str1.length(); i++) {
                    if (i < index) {
                        str2 += str1.charAt(i);
                    } else if (i > index) {
                        sb.append(str1.charAt(i));
                    }
                }
                strArray[count] = str2;
                str1 = sb.toString();
                count++;
            }
        }
        return strArray;
    }

    // String receplace(String oldStr,String newStr) : 使用newString替换oldStr
    /*
     * 分析:找到第一次出现的索引,将新的替换旧的,这时候继续找第一次出现的索引
     */
    public static String receplace(String str1, String oldStr, String newStr) {
        while (true) {
            int index = -1;
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < str1.length() - oldStr.length() + 1; i++) {
                boolean isok = true;
                for (int j = 0; j < oldStr.length(); j++) {
                    if (str1.charAt(i + j) != oldStr.charAt(j)) {
                        isok = false;
                    }
                }
                if (isok) {
                    index = i;
                }
            }
            if (index == -1) {
                return str1;
            } else {
                for (int x = 0; x < index; x++) {
                    sb.append(str1.charAt(x));
                }
                sb.append(newStr);
                for (int x = index + oldStr.length(); x < str1.length(); x++) {
                    sb.append(str1.charAt(x));
                }
                str1 = sb.toString();
            }
        }
    }