Java String 字符串 應用

 

  1. 用本身的算法實現startsWith和endsWith功能。
/**
 * 1. 用本身的算法實現startsWith和endsWith功能。
 * @author ztw
 *
 */
public class Practice01 {

    public static void main(String[] args) {

        String str = "qwewrewr";
//      boolean temp = str.endsWith("r");
//      System.out.println(temp);

        /*
         * startsWith
         */
        char[] arr = str.toCharArray();
        char c = 'r';
        if(arr[0]==c){
            System.out.println("true");
        }else{
            System.out.println("false");
        }
        /*
         * endsWith
         */
        if(arr[arr.length-1]==c){
            System.out.println("true");
        }else{
            System.out.println("false");
        }
    }
}

輸出結果:java

false
true算法

2.採用字符的移位方式實現字符文本加密解密。數組

import java.util.Scanner;

/**
 * 2.採用字符的移位方式實現字符文本加密解密。
 * @author ztw
 *
 */
public class Practice02 {

    public static void main(String[] args) {
        System.out.println("請輸入一個字符串");
        Scanner sc =new Scanner(System.in);
        String str1 = new String();
        str1=sc.nextLine();        
        System.out.println(str1.replaceAll("a", "1.")
                .replaceAll("b", "2.").replaceAll("c", "3.")
                .replaceAll("d", "4.").replaceAll("e", "5.")
                .replaceAll("f", "6.").replaceAll("g", "7.")
                .replaceAll("h", "8.").replaceAll("i", "9.")
                .replaceAll("j", "10.").replaceAll("k", "11.")
                .replaceAll("l", "12.").replaceAll("m", "13.")
                .replaceAll("n", "14.").replaceAll("o", "15.")
                .replaceAll("p", "16.").replaceAll("q", "17.")
                .replaceAll("r", "18.").replaceAll("s", "19.")
                .replaceAll("t", "20.").replaceAll("u", "21.")
                .replaceAll("v", "22.").replaceAll("w", "23.")
                .replaceAll("x", "24.").replaceAll("y", "25.")
                .replaceAll("z", "26."));
    }
}

輸出結果:dom

請輸入一個字符串
asdsddffg
1.19.4.19.4.4.6.6.7.this

3.驗證是隨機生成4位驗證碼,由用戶輸入並否輸入正確, 若是輸入錯誤就生成新的驗證碼讓用戶從新輸入,最多輸入5次!加密

import java.util.Random;
import java.util.Scanner;


/**
 * 3.驗證是隨機生成4位驗證碼,由用戶輸入並否輸入正確,
 * 若是輸入錯誤就生成新的驗證碼讓用戶從新輸入,最多輸入5次
 * @author ztw
 *
 */
public class Practice03 {

    public static void main(String[] args) {
        String str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char[]arr=new char[4];//定義一個長度是4的char型數組
        Random sj=new Random();
        System.out.println("驗證碼是:");
        for(int i=0;i<4;i++)
        {
            arr[i]=str.charAt(sj.nextInt(61));//從str中隨機截取4個單個字符並賦值給arr這個數組存放
        }
        System.out.println(arr);
        Scanner sc=new Scanner(System.in);
        System.out.println("請輸入驗證碼");

        String a=new String(arr);//把數組轉換成字符串
        //定義輸入次數
        for(int j=0;j<5;j++)
        {
            if(sc.nextLine().equals(a))
            {

                System.out.println("驗證碼輸入正確");

            }
            else
            {
                System.out.println("驗證碼輸入有誤,請從新輸入");
                if(j<=3)
                {


                    System.out.print("請輸入驗證碼");
                    for(int i=0;i<4;i++)
                    {
                        arr[i]=str.charAt(sj.nextInt(61));//從str中隨機截取4個單個字符並賦值給arr這個數組存放
                    }
                    System.out.println(arr);
                    a=new String (arr);

                }
                else
                {
                    System.out.println("輸入有誤,對不起,5次機會已用完");
                }
            }
        }
    }
}

輸出結果:spa

驗證碼是:
AVA8
請輸入驗證碼
AVA8驗證碼輸入正確.net

/**
 * 4.獲取一個字符串在另外一個字符串中出現的次數
    思路:
    1.定義一個計數器。
    2.獲取子串第一次出現的位置
    3.從第一次出現的位置後剩餘的字符串中繼續獲取子串出現的位置,每獲取一次計數器加1
    4,當獲取不到時,計數完成
 * @author ztw
 *
 */
public class Practice04 {

    public static void main(String[] args) {

        String str1 = "asdasdas";
        String str2 = "as";
        //1.定義一個計數器。
        int total = 0;
        for (String temp = str1; temp!=null && 
                temp.length()>=str2.length();) {
            //2.獲取子串第一次出現的位置
            if(temp.indexOf(str2) == 0){
                //3.從第一次出現的位置後剩餘的字符串中繼續獲取子串出現的位置,每獲取一次計數器加1
                total ++;
            }
            temp = temp.substring(1);
            System.out.print(temp+", ");
        }
        //4,當獲取不到時,計數完成
        System.out.println("計數完成:"+total);
    }
}

 

輸出結果:code

sdasdas, dasdas, asdas, sdas, das, as, s, 計數完成:3索引

 

/**
 * 5.獲取兩個子串中最大相同子串
     思路:
      1.將短的哪一個子串按照長度遞減的方式獲取到
      2.將每次獲取到的子串去長串中判斷是否包含,若是包含,已經找到
 * @author ztw
 *
 */
public class Practice05 {

     public static String getMaxSubString(String s1,String s2)  {  
            String max = "",min = "";  
            max = (s1.length()>s2.length())?s1: s2;  
            min = (max==s1)?s2: s1;       
//          sop("max="+max+"...min="+min);  
            for(int x=0; x<min.length(); x++)  
            {  
                for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)  
                {  
                    String temp = min.substring(y,z);                 
                    sop(temp);  
                    if(max.contains(temp))//if(s1.indexOf(temp)!=-1)  
                        return temp;  
                }  
            }  
            return "";  
        }  
        public static void main(String[] args)   
        {  
            String s1 = "ab";  
            String s2 = "cvhellobnm";  
            sop(getMaxSubString(s2,s1));  
        }  
        public static void sop(String str)  
        {  
            System.out.print(str+", ");  
        }  
}

 

輸出結果:

ab, a, b, b,

/**
 * 六、寫一個方法判斷一個字符串是否對稱
 * @author ztw
 *
 */
public class Practice06 {


    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String str = input.next();//接收任意字符串

        isOk1(str);                        
}
    /**
     * 判斷字符串是否對稱的方法(一)
     * 經過取取索引對應值來進行一一比對
     * @param str
     */
    public static void  isOk1(String str){
            boolean result = true;
            int count =(str.length()-1)/2;
            for (int x=0;x<=count;x++ ){

                    if(str.charAt(x)!=str.charAt(str.length()-1-x)){
                            result = false;
                            break;
                    }
            }
            if(!result)
                    System.out.println("該字符串是不對稱的");
            else
                    System.out.println("該字符串是對稱的");
    }


    /*
     * public static void main(String[] args){
                Scanner input = new Scanner(System.in);
            String str = input.next();//接收任意字符串
                   if (isOk2(str)==true) {
                        System.out.println("真,對稱!");
                }else{
                        System.out.println("假,不對稱!");
                }

        }
       /**
         * 方法二
         * 經過String增強類中的取反方法reverse獲取其逆向值
         * 再與原字符串相比是否相等!
         * 等於則返回TRUE,不然FALSE
         * @param str
         * @return
         */
    /*
        public static boolean isOk2(String str){
                StringBuffer sb = new StringBuffer(str);
                String str2 = sb.reverse().toString();
                return str.equals(str2);
        }
     */
}

 

輸出結果:

asdsa
該字符串是對稱的

/**
 * 
    九、編寫一個程序,將下面的一段文本中的各個單詞的字母順序翻轉,

    「To be or not to be",將變成"oT eb ro ton ot eb."。
 * @author ztw
 *
 */
public class Practice09 {

    public static void main(String[] args) {

        String str = "To be or not to be";
        String[] str2 = str.split(" ");

        for (int i = 0; i < str2.length; i++) {

            char[] ci = str2[i].toCharArray();
            System.out.print(" ");

            for (int j = ci.length-1; j >= 0 ; j--) {
                System.out.print(ci[j]);
            }
        }
    }
}

 

/**
 * 十、已知字符串:"this is a test of java". 

    按要求執行如下操做:
    (1) 統計該字符串中字母s出現的次數
    (2) 取出子字符串"test"
    (3) 用多種方式將本字符串複製到一個字符數組Char[] str中.
    (4) 將字符串中每一個單詞的第一個字母變成大寫, 輸出到控制檯。
    (5) 用兩種方式實現該字符串的倒敘輸出。(用StringBuffer和for循環方式分別實現)
    (6) 將本字符串轉換成一個字符串數組,要求每一個數組元素都是一個有意義的額英文單詞,並輸出到控制檯
 * @author ztw
 *
 */
public class Practice10 {


    public static void main(String[] args) {

        String str = "this is a test of java";
//      (1) 統計該字符串中字母s出現的次數
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if(str.charAt(i)=='s'){
                count++;
            }
        }
        System.out.println("字符串中字母s出現的次數:"+count);

//      (2) 取出子字符串"test"
        String str2 = (String) str.subSequence(10, 14);
        System.out.println(str2);
//      (3) 用多種方式將本字符串複製到一個字符數組Char[] str中.
        char[] c = str.toCharArray();
        System.out.println(c);

        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]);
        }
        System.out.println();
//      (4) 將字符串中每一個單詞的第一個字母變成大寫, 輸出到控制檯。
            str=str.toLowerCase();
            String[] tt=str.split(" ");
            System.out.println(tt.length);
            for(int i=0;i<tt.length;i++)
            {   
                //加個判斷,長度大於0的
                if(tt[i].length()>0){
                    System.out.print(String.valueOf(tt[i].charAt(0)).toUpperCase());
                    System.out.print(tt[i].substring(1)+" ");
                }
            }
            System.out.println();
//      (5) 用兩種方式實現該字符串的倒敘輸出。(用StringBuffer和for循環方式分別實現)
            StringBuffer sb = new StringBuffer(str);
            System.out.println(sb.reverse().toString());

            char[] c3 = str.toCharArray();
            for (int i = c3.length-1; i >= 0 ; i--) {
                System.out.print(c3[i]);
            }
            System.out.println();

//      (6) 將本字符串轉換成一個字符串數組,要求每一個數組元素都是一個有意義的額英文單詞,並輸出到控制檯
            String[] str5=str.split(" ");
            for (int i = 0; i < str5.length; i++) {
                System.out.print(str5[i]+", ");
            }
    }
}

 

輸出結果:

字符串中字母s出現的次數:3
test
this is a test of Java this is a test of java 6 This Is A Test Of Java avaj fo tset a si siht avaj fo tset a si siht this, is, a, test, of, java,

相關文章
相關標籤/搜索