溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中字符串運(yùn)算String類的案例分析

發(fā)布時間:2020-10-26 11:27:31 來源:億速云 閱讀:152 作者:小新 欄目:編程語言

小編給大家分享一下Java中字符串運(yùn)算String類的案例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、字符串運(yùn)算 String類

1、概述

String是特殊的引用數(shù)據(jù)類型,它是final類。

2.構(gòu)造方法

String str = "abc";

相當(dāng)于:  char date[] = {'a','b','c'};

String str = new String{data};

3.主要方法

char charAt(int index)  返回char指定索引處的值。

boolean contains(CharSequence s)當(dāng)且僅當(dāng)字符串包含指定char值序列返回true

boolean equals(Object anObject)  將次字符串與指定對象進(jìn)行比較

int indexOf(int ch)  返回指定字符第一次出現(xiàn)的索引值

int length()  返回字符串的長度,多用于循環(huán)的終止條件

boolean matches(String regex)  判斷一個字符串是否匹配給定的規(guī)則表達(dá)式

String replace(char oldChar,char newChar) 將串中所有的oldChar替換為newChar

String split(String regex)  將字符串按照規(guī)矩進(jìn)行切分

String subString(int beginIndex) 返回該字符串的beginindex索引之后的字符串

String toLowerCase()  將該字符串中的所有大寫字母變?yōu)樾懽帜?/p>

String toUpperCase()  將該字符串中的所有小寫字母變?yōu)榇髮懽帜?/p>

String trim()  刪除該字符串所有前導(dǎo)和尾隨的空格并返回

/*類型轉(zhuǎn)換*/
static String valueOf(boolean b)
返回 boolean參數(shù)的字符串 boolean形式。  
static String valueOf(char c)
返回 char參數(shù)的字符串 char形式。  
static String valueOf(char[] data)
返回 char數(shù)組參數(shù)的字符串 char形式。  
static String valueOf(char[] data, int offset, int count)
返回 char數(shù)組參數(shù)的特定子陣列的字符串 char形式。  
static String valueOf(double d)
返回 double參數(shù)的字符串 double形式。  
static String valueOf(float f)
返回 float參數(shù)的字符串 float形式。  
static String valueOf(int i)
返回 int參數(shù)的字符串 int形式。  
static String valueOf(long l)
返回 long參數(shù)的字符串 long形式。  
static String valueOf(Object obj)
返回 Object參數(shù)的字符串 Object形式。

注意:String字符串“==”與equals方法的區(qū)別:

如果是通過String str = ""聲明的,==和equals都可是使用;

如果是通過new String ("")聲明的,不能用==,只能用equals。

4.演示案例

需求一:計(jì)算一個字符串中大寫字母、小寫字母和數(shù)字的個數(shù)

思路:將字符串通過for循環(huán)進(jìn)行便利,使用charAt方法獲取每一位字符,然后將每一位字符與AscII碼對應(yīng)的值相對比判斷是大寫字母、小寫字母、數(shù)字,計(jì)數(shù)打印。

/**
 * @ author: PrincessHug
 * @ date: 2019/2/7, 17:09
 * @ Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class StringAPIDemo {
    /**
     * 需求:計(jì)算字符串中大寫字母、小寫字母、數(shù)字出現(xiàn)的次數(shù)
     * @param args 參數(shù)
     */
    public static void main(String[] args) {
        //通過用戶輸入得到一個字符串
        String str = getString();
        getCount(str);
    }
    private static void getCount(String str) {
        int upperNum = 0;
        int lowerNum = 0;
        int digit = 0;
        for (int i = 0;i< str.length();i++){
            char c = str.charAt(i);
            /**
             * AscII碼數(shù)字1-9(48-57),A-Z(65-91),a-z(97-123)
             */
            if (c>=48 && c<=57){
                digit++;
            }
            if (c>=65 && c<=91){
                upperNum++;
            }
            if (c>=97 && c<=123){
                lowerNum++;
            }
        }
        System.out.println("數(shù)字出現(xiàn)的次數(shù)為:" + digit);
        System.out.println("大寫字母出現(xiàn)的次數(shù)為:" + upperNum);
        System.out.println("小寫字母出現(xiàn)的次數(shù)為:" + lowerNum);
    }
    private static String getString() {
        System.out.println("請輸入一個字符串:");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        return s;
    }
}

需求二:查詢父字符串中某一個子字符串出現(xiàn)的次數(shù)

思路1:使用indexOf方法查詢子字符串第一次出現(xiàn)的索引a,再使用subString方法返回父字符串索引(a+子字符串長度)之后的字符串,并計(jì)數(shù)+1,循環(huán)該操作知道indexOf方法返回值為-1停止,獲取計(jì)數(shù)值即可。

思路2:使用split方法將父字符串按照子字符串進(jìn)行切分得到String數(shù)組,使用subString方法獲取父字符串最后的字符串是否等于子字符串,若等于,返回String數(shù)組的length長度;若不等,則返回String數(shù)組的length-1.

**
 * @ author: PrincessHug
 * @ date: 2019/2/7, 17:34
 * @ Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class FindChildStringCount {
    /**
     * 需求:查詢父字符串中某一個子字符串的數(shù)量
     * @param args
     */
    public static void main(String[] args) {
        String parent = "itstar123qweritstar()%%dfitstarsdgji";
        String child = "itstar";

        int num1 = getChildStringCount01(parent, child);
        int num2 = getChildStringCount02(parent,child);
        int num3 = getChildStringCount03(parent,child);
        System.out.println("方法一:" + num1 + "次。");
        System.out.println("方法二:" + num2 + "次。");
        System.out.println("方法三:" + num3 + "次。");
    }

    private static int getChildStringCount02(String parent, String child) {
        String[] s = parent.split(child);
        if (child.equals(parent.substring(parent.length()-child.length()))){
            return s.length;
        }else {
            return s.length-1;
        }
    }

    private static int getChildStringCount01(String parent,String child) {
        int num = 0;
        int index = 0;
        while ((index = parent.indexOf(child)) != -1){
            num++;
            parent = parent.substring(index + child.length());
        }

        return num;
    }
    private static int getChildStringCount03(String parent,String child){
        String[] s = parent.split(child);
        int sum = 0;
        for (int i = 0;i < s.length;i++){
            sum += s[i].length();
        }
        return sum==parent.length()-(s.length-1)*child.length()?s.length-1:s.length;
    }
}

5.String的規(guī)則匹配(正則表達(dá)式)

正則表達(dá)式常用于驗(yàn)證身份證號、qq號、郵箱等

字符類及含義:

[abc]  =>  abc都可以

[a-zA-Z]  =>  a-z或者A-Z都可以,兩頭都是閉區(qū)間

[0-9]  =>  數(shù)字0-9都可以

\d   =>   與[0-9]一樣

\D     =>   不能是數(shù)字

\w     =>   表示字母、數(shù)字、下劃線都可以,等于[a-zA-Z0-9_]

x?     =>   表示x出現(xiàn)一次或一次也沒有

x*   =>   表示x出現(xiàn)了零次或多次

X{n}     =>   表示x出現(xiàn)了n次

X{n,m}    =>   表示x出現(xiàn)了n到m次

X+     =>   表示x至少出現(xiàn)了一次

^     =>   表示正則表達(dá)式的開頭

&    =>   表示正則表達(dá)式結(jié)尾

需求一:驗(yàn)證qq號碼是否正確

qq號碼條件:

(1)位數(shù)為5-15位

(2)開頭數(shù)字不能為0

正則表達(dá)式為:regex = [1-9]\\d{4-14}

需求二:驗(yàn)證手機(jī)號碼是否正確

手機(jī)號條件:

(1)位數(shù)為11位

(2)第一位為1

(3)第二位為3-9

正則表達(dá)式為:regex = [1]][3-9]\\d{9}  

需求三:驗(yàn)證郵箱是否正確

郵箱條件:

(1)@之前為郵箱名,字母、數(shù)字、下劃線都可以

(2)@符號

(3)@之后為郵箱域名(qq.com/163.com.cn)

正則表達(dá)式為:regex = \\w+@[a-zA-Z0-9]+(\\.\\w{2,3})+

以下為需求一:驗(yàn)證qq號碼是否正確,需求二、三只需將regex修改為對應(yīng)的正則表達(dá)式即可。

/**
 * @ author: PrincessHug
 * @ date: 2019/2/7, 21:51
 * @ Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class MatchQQ {
    public static void main(String[] args) {
        while (true) {
            String qq = getQQ();
            if (qq.equals("stop")){
                break;
            }else {
                matchQQ(qq);
            }
        }
    }

    /**
     * @return 返回獲取的qq號
     */
    private static String getQQ() {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入您的qq號");
        String s = sc.nextLine();
        return s;
    }

    /**
     * 驗(yàn)證qq號是否匹配regex表達(dá)式
     * @param qq 獲得用戶輸入的qq號
     */
    private static void matchQQ(String qq) {
        String regex = qqRegex();
        if (qq.matches(regex)) {
            System.out.println("QQ號正確!");
        } else {
            System.out.println("QQ號錯誤!");
        }
    }

    /**
     * @return 返回qq的正則表達(dá)式
     */
    private static String qqRegex() {
        String regex = "[1-9][0-9]{4,14}";
        return regex;
    }
}

以上是Java中字符串運(yùn)算String類的案例分析的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI