JavaSE 常用类 之 String Part2

–原作者:尚硅谷-宋红康


自定义实现字符串常用的方法


public class StringTest {


    @Test
    public void testStringMethod() {
        String str = "    d    ";
        System.out.println(trim(str));

        str = "    ";
        System.out.println(trim(str).length());
        System.out.println();

        str = "abcdefg";
        System.out.println(reverse(str, 2, 5));
        System.out.println(reverse1(str, 2, 5));

        System.out.println();

        str = "abcdefcdgj";
        String subStr = "cd";
        System.out.println(getTime(str, subStr));

        String str1 = "abcdefqwfghilmncj", str2 = "abqfcdeoqmnczz";
        for (String s : getMaxSubString(str1, str2)) {
            System.out.println(s);
        }

        str = "qwawwziyabc";
        System.out.println(sortString(str));

    }

    /**
     * 对字符串中的字符进行自然排序
     * 
     * @param str
     * @return
     */
    public String sortString(String str) {
        char[] c = str.toCharArray();
        Arrays.parallelSort(c);
        return new String(c);
    }

    /**
     * 获取两个字符串中最大的相同子串
     * 
     * @param str1
     * @param str2
     * @return
     */
    public Set<String> getMaxSubString(String str1, String str2) {
        Set<String> strs = new HashSet<String>();
        String maxStr, minStr, tempStr;

        if (str1.length() > str2.length()) {
            maxStr = str1;
            minStr = str2;
        } else {
            maxStr = str2;
            minStr = str1;
        }

        int len = minStr.length();

        for (int i = 0; i < len; i++) {
            for (int x = 0, y = len - i; y <= len; x++, y++) {
                tempStr = minStr.substring(x, y);
                if (maxStr.contains(tempStr)) {
                    strs.add(tempStr);
                }
            }
            if (strs.size() > 0) {
                return strs;
            }
        }

        return null;
    }

    /**
     * 获取一个字符串在另一个字符串中出现的次数
     * 
     * @param str
     * @param subStr
     * @return
     */
    public static int getTime(String str, String subStr) {
        int time = 0;
        int loc;
        while ((loc = str.indexOf(subStr)) != -1) {
            time++;
            str = str.substring(loc + subStr.length());
        }

        return time;
    }

    /**
     * 字符串的反转:方法二
     * 
     * @param str
     * @param start
     * @param end
     * @return
     */
    public String reverse1(String str, int start, int end) {
        String frontStr = str.substring(0, start);

        for (int i = end; i >= start; i--) {
            frontStr += str.charAt(i);
        }

        frontStr += str.substring(end + 1);
        return frontStr;
    }

    /**
     * 字符串的反转:方法一
     * 
     * @param str
     * @param start
     * @param end
     * @return
     */
    public static String reverse(String str, int start, int end) {
        // 调用字符数组反转的方法
        return reverse(str.toCharArray(), start, end);
    }

    /**
     * 字符数组的反转
     * 
     * @param charArray
     * @param start
     * @param end
     * @return
     */
    public static String reverse(char[] charArray, int start, int end) {
        char c;
        for (int i = start, j = end; i < j; i++, j--) {
            c = charArray[i];
            charArray[i] = charArray[j];
            charArray[j] = c;
        }
        return new String(charArray);
    }

    /**
     * 字符串去除前后空格
     * 
     * @param str
     * @return
     */
    public static String trim(String str) {

        int start = 0;
        int end = str.length() - 1;

        while (start < end && str.charAt(start) == ' ') {
            start++;
        }

        while (start < end && str.charAt(end) == ' ') {
            end--;
        }

        return str.substring(start, end + 1);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值