Java字符串操作编程

package com.joshua317;

import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) {
//        stringCompare();
//        searchLastString();
//        System.out.println(removeCharAtt("joshua317", 3));
//        stringReplace();
//        stringReverse();
//        searchString();
//        stringSplit();
//        stringTokenizerSplit();
//        stringToUpperCase();
//        stringConcatenate();
    }

    /**
     * 1 字符串比较
     * 使用字符串函数 compareTo (string),compareToIgnoreCase(String)及compareTo(object string) 来比较两个字符串,
     * 并返回字符串中第一个字母ASCII的差值
     */
    public static void stringCompare()
    {
        String str1 = "Hello World";
        String str2 = "hello world";
        Object str3 = str1;

        System.out.println(str1.compareTo(str2));
        //忽略大小写
        System.out.println(str1.compareToIgnoreCase(str2));
        System.out.println(str1.compareTo(str3.toString()));
    }

    /**
     * 2 查找字符串最后一次出现的位置
     * 使用字符串函数 lastIndexOf(String str),返回指定子字符串在此字符串中最右边出现处的索引。
     */
    public static void searchLastString()
    {
        String str = "Hello world ,Hello joshua317";
        int lastIndex = str.lastIndexOf("joshua317");
        if (lastIndex == - 1) {
            System.out.println("没有找到字符串 joshua317");
        } else {
            System.out.println("joshua317字符串最后出现的位置: "+ lastIndex);
        }

        lastIndex = str.lastIndexOf("joshua318");
        if (lastIndex == - 1) {
            System.out.println("没有找到字符串joshua318");
        } else {
            System.out.println("joshua318字符串最后出现的位置: "+ lastIndex);
        }
    }

    /**
     * 3 删除字符串中的一个字符
     * 使用字符串函数 substring() 函数来删除字符串中的一个字符
     * @param str
     * @param pos 从0开始计数
     * @return
     */
    public static String removeCharAtt(String str, int pos)
    {
        return str.substring(0, pos) + str.substring(pos + 1);
    }

    /**
     * 4 字符串替换
     * 使用字符串函数 replace(char oldChar, char newChar)方法来替换字符串中的字符;
     * replaceFirst(String regex, String replacement),用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串;
     * replaceAll(String regex, String replacement),用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
     */
    public static void stringReplace()
    {
        String str="Hello joshua317";
        System.out.println( str.replace('H','W' ));
        System.out.println( str.replaceFirst("He", "Wa"));
        System.out.println( str.replaceAll("He", "Ha"));
    }

    /**
     * 5 字符串反转
     * 使用StringBuffer类的反转函数 reverse() 将字符串反转
     */
    public static void stringReverse()
    {
        String string = "joshua317";
        String reverse = new StringBuffer(string).reverse().toString();
        System.out.println("字符串反转前:" + string);
        System.out.println("字符串反转后:" + reverse);
    }

    public static void searchString()
    {
        String str = "Hello joshua317";
        int intIndex = str.indexOf("joshua317");
        if(intIndex == - 1){
            System.out.println("没有找到字符串joshua317");
        }else{
            System.out.println("joshua317字符串位置 " + intIndex);
        }
    }

    /**
     * 6 字符串分割
     * 使用split(string) 方法通过指定分隔符将字符串分割为数组
     */
    public static void stringSplit()
    {
        String str1 = "www-joshua317-com";
        String[] temp;
        // 指定分割字符
        String delimeter = "-";
        // 分割字符串
        temp = str1.split(delimeter);
        // 普通 for 循环
        for(int i =0; i < temp.length ; i++){
            System.out.println(temp[i]);
        }

        System.out.println("------for each循环输出的方法-----");
        String str2 = "www.joshua317.com";
        String[] temp1;
        // 指定分割字符, . 号需要转义
        String delimeter1 = "\\.";
        // 分割字符串
        temp1 = str2.split(delimeter1);
        for(String x :  temp1){
            System.out.println(x);
        }
    }

    /**
     *  7 使用StringTokenizer对字符串分隔
     * 使用 StringTokennizer 设置不同分隔符来分隔字符串,默认的分隔符是:空格、制表符(\t)、换行符(\n)、回车符(\r)。
     * 注意:StringTokennizer会以给定分割字符串的每个字符进行分割,而split(string)是以整个字符串进行切割
     */
    public static void stringTokenizerSplit()
    {
        String str = "Hello joshua317, how are you";

        StringTokenizer st1 = new StringTokenizer(str);
        System.out.println("=========StringTokenizer默认情况============");
        while (st1.hasMoreElements()) {
            System.out.println(st1.nextElement());
        }
        StringTokenizer st2 = new StringTokenizer(str, "oh");
        System.out.println("=========StringTokenizer指定字符串分割============");
        while (st2.hasMoreElements()) {
            System.out.println(st2.nextElement());
        }

        StringTokenizer st3 = new StringTokenizer(str, "oh", true);
        System.out.println("=========StringTokenizer,返回分隔符============");
        while (st3.hasMoreElements()) {
            System.out.println(st3.nextElement());
        }
    }

    /**
     * 8 字符串小写转大写
     * 使用 String类的toUpperCase()方法将字符串从小写转为大写
     */
    public static void stringToUpperCase()
    {
        String str = "joshua317";
        String strUpper = str.toUpperCase();
        System.out.println("原始字符串: " + str);
        System.out.println("转换为大写: " + strUpper);
    }

    /**
     * 9 字符串连接
     * 通过 "+"操作符和StringBuffer.append()方法来连接字符串,并且对比下俩者性能
     */
    public static void stringConcatenate()
    {
        long startTime = System.currentTimeMillis();
        for(int i=0; i<5000; i++){
            String result = "This is" + "testing the" + "difference"+ "between" + "String"+ "and"+ "StringBuffer";
        }
        long endTime = System.currentTimeMillis();
        System.out.println("字符串连接" + " - 使用 + 操作符 : " + (endTime - startTime)+ " ms");

        long startTime1 = System.currentTimeMillis();
        for(int i=0; i<5000; i++){
            StringBuffer result = new StringBuffer();
            result.append("This is");
            result.append("testing the");
            result.append("difference");
            result.append("between");
            result.append("String");
            result.append("and");
            result.append("StringBuffer");
        }
        long endTime1 = System.currentTimeMillis();
        System.out.println("字符串连接" + " - 使用 StringBuffer : " + (endTime1 - startTime1)+ " ms");
    }
}

 

posted @ 2022-01-04 22:22  joshua317  阅读(42)  评论(0编辑  收藏  举报